Fixing the Java Memory Model

User avatar
WildVlad
Уже с Приветом
Posts: 3982
Joined: 13 Jul 2000 09:01
Location: SVX -> BOS -> BUR -> SJC

Re: Fixing the Java Memory Model

Post by WildVlad »

tengiz wrote:
Sabina wrote:То есть на С++, чтобы написать вот это... тоже шесть строк кода уйдет :pain1: ?

...На C++ при наличии аналогичной библиотеки классов...

Более того, готов поспорить, что Сан эту библиотеку (или идею для неё) где-то позаимствовал, как он это обычно делает в последнее время.
I hated LA
User avatar
Sabina
Уже с Приветом
Posts: 5669
Joined: 13 Oct 2000 09:01
Location: East Bay, CA

Re: Fixing the Java Memory Model

Post by Sabina »

tengiz wrote:Cабина - Вы какой-то странный вопрос задали. На C++ при наличии аналогичной библиотеки классов не просто то же количество строк понадобится, а буквально те же строки. Может, Вы что-то другое хотели спросить да просто не очень ясно сформулировали?


Наверное :) Ну хорошо, не С++, а lower level languages
Мне кажется это нормальная эволюция языков программирования. Мне искренне непонятно почему наличие такой же библиотеки в С++ вас бы устроило, а в Java раздражает?

Сабина
User avatar
Sabina
Уже с Приветом
Posts: 5669
Joined: 13 Oct 2000 09:01
Location: East Bay, CA

Re: Fixing the Java Memory Model

Post by Sabina »

WildVlad wrote:
tengiz wrote:
Sabina wrote:То есть на С++, чтобы написать вот это... тоже шесть строк кода уйдет :pain1: ?

...На C++ при наличии аналогичной библиотеки классов...

Более того, готов поспорить, что Сан эту библиотеку (или идею для неё) где-то позаимствовал, как он это обычно делает в последнее время.


Интересно у кого они могли позаимстовать JVM monitoring?
И у кого еще есть аналоги ManagementBeans ?

Сабина
User avatar
WildVlad
Уже с Приветом
Posts: 3982
Joined: 13 Jul 2000 09:01
Location: SVX -> BOS -> BUR -> SJC

Re: Fixing the Java Memory Model

Post by WildVlad »

Sabina wrote:Интересно у кого они могли позаимстовать JVM monitoring?

Средства мониторинга и диагностики для OS были чуть ли не со времён счёт (абакусов).
I hated LA
User avatar
KVA
Уже с Приветом
Posts: 5347
Joined: 03 Feb 1999 10:01
Location: NJ, USA

Re: Fixing the Java Memory Model

Post by KVA »

Sabina wrote:Интересно у кого они могли позаимстовать JVM monitoring?


Идею где угодно. В приличных OS мониторинг есть, да .NET этим добром не обделен.
User avatar
tengiz
Уже с Приветом
Posts: 4468
Joined: 21 Sep 2000 09:01
Location: Sammamish, WA

Re: Fixing the Java Memory Model

Post by tengiz »

Sabina wrote:Мне кажется это нормальная эволюция языков программирования. Мне искренне непонятно почему наличие такой же библиотеки в С++ вас бы устроило, а в Java раздражает?

ОК, теперь понятнее :)

Да нет, меня ничего не радражает. Я просто отстал от жизни и полагал, что если Java всё-так несколько дальше ушёл от C/C++ в смысле привнесения в параллельное программирование качественных и высокоэффективных абстракций. Смысл которых избавить инжерена-разработчика от большей части головной боли, связанной с той парой дюжиной пунктов, которые Вы конспективно изложили по мотивам упомянутого доклада. Уважаемому господину Гослингу, сказавшему А (встроенная в язык синхронизация в виде замечательного слова synchronized и как бы встроенная многопоточность, хотя на самом деле никакой толком встроенности и нет), нужно было бы дело это довести до конца и сказать все остальные буквы алфавита тоже.

Иначе Java на серверах мало отличается от C/C++. Я только это и имел в виду. Больше ровным счётом ничего. Практический вывод который из этого следует для меня лично - никакого особенного интереса к Java на серверах у меня нет и пока быть не может. А жаль.

Хотя если Си шарп снизойдёт до реализации довольно старых красивых идей, которые с некоторых пор интересуют публику в MS Research - см.Introduction to Polyphonic C#, то может и Java тоже зачешется и рванёт в том же направлении. Вот тогда будет уже поинтереснее.

<added>
Вот чуть поинтереснее ссылка на PDF о Modern Concurrency Abstractions for C#.
</added>
Cheers
User avatar
Blake
Уже с Приветом
Posts: 1102
Joined: 16 Sep 2003 04:41
Location: Out Of Blue

Re: Fixing the Java Memory Model

Post by Blake »

Sabina wrote:И у кого еще есть аналоги ManagementBeans ?


У IBM :wink:
User avatar
Sabina
Уже с Приветом
Posts: 5669
Joined: 13 Oct 2000 09:01
Location: East Bay, CA

Re: Fixing the Java Memory Model

Post by Sabina »

Blake wrote:
Sabina wrote:И у кого еще есть аналоги ManagementBeans ?


У IBM :wink:


А ссылку :wink: ?

Сабина
User avatar
Blake
Уже с Приветом
Posts: 1102
Joined: 16 Sep 2003 04:41
Location: Out Of Blue

Re: Fixing the Java Memory Model

Post by Blake »

Sabina wrote:
Blake wrote:
Sabina wrote:И у кого еще есть аналоги ManagementBeans ?


У IBM :wink:


А ссылку :wink: ?

Сабина


http://www.alphaworks.ibm.com/tech/mbeaninspector etc
User avatar
VladDod
Уже с Приветом
Posts: 56203
Joined: 06 May 2001 09:01

Re: Fixing the Java Memory Model

Post by VladDod »

hooch wrote:Автораспараллеливание средствами языка программирования???

Модула :pain1:
в реале супруги редко бывают друзьями, так как их отношения подпорчены сексом (с)Роза
Плавали-Знаем! (C)
User avatar
Sabina
Уже с Приветом
Posts: 5669
Joined: 13 Oct 2000 09:01
Location: East Bay, CA

Re: Fixing the Java Memory Model

Post by Sabina »



"Это все о нем" (JMX MBeans). Хотя кто его знает, может и сперли идею этих тулов у IBM :wink:

Сабина
User avatar
Blake
Уже с Приветом
Posts: 1102
Joined: 16 Sep 2003 04:41
Location: Out Of Blue

Re: Fixing the Java Memory Model

Post by Blake »

tengiz wrote: ...в смысле привнесения в параллельное программирование качественных и высокоэффективных абстракций.
Таких?
User avatar
hooch
Уже с Приветом
Posts: 1169
Joined: 16 Jan 2003 23:23

Re: Fixing the Java Memory Model

Post by hooch »

WildVlad wrote:
hooch wrote:
А вот уже компилятор может полагаться на среду исполнения.
Ну а когда уже и компилятор будет знать о авто-распараллеливании, то и определённые индивидуумы могут попытаться это использовать :mrgreen:


Если мы все еще говорим о Java, то для компилятора среда исполнения - это всегда JVM. JVM уже сеичас используют особенности конкретной ОС и процессора во время ран тайм для оптимизации исполнения кода, уверен, что и авто-распараллеливание используется в той или иной форме.
User avatar
Blake
Уже с Приветом
Posts: 1102
Joined: 16 Sep 2003 04:41
Location: Out Of Blue

Re: Fixing the Java Memory Model

Post by Blake »

Sabina wrote:Хотя кто его знает, может и сперли идею этих тулов у IBM :wink:


Вроде нет, но пока они (Sun) JSR-160 продвигали, IBM встроила JMX в WebSphere :wink:
User avatar
Sabina
Уже с Приветом
Posts: 5669
Joined: 13 Oct 2000 09:01
Location: East Bay, CA

Re: Fixing the Java Memory Model

Post by Sabina »

WildVlad wrote:
*do not start thread from constructor, etc.

Спорное утверждение. Грозит только потерей ссылки на нить при исключении ниже по тексту конструктора.


Там упоминались две причины, одна старая классическая, другая связана с теми новинками, что реализованы в 1.5
Последнюю я как-то прослушала/недопоняла :oops:
А насчет классической, вот примерно подходящее описание:

Consider the following classes A and B:

Code: Select all

class A implements Runnable
{
    public A ()
    {
        ( new Thread ( this ) ).start ();
    }

    public void run ()
    {
        doSomething ();
        return;
    }

    public void doSomething ()
    {
        return;
    }
}

class B extends A
{
    private Object object;

    public B ()
    {
    // first line has an implicit call to this.A()

        object = new Object ();
    }

    public void doSomething ()
    {
        synchronized ( this )
        {
            try
            {
                object.wait ();
            }
            catch ( InterruptedException ie ) {}
        }

        return;
    }
}

I believe that constructor invocation is recursive.
The Java compiler places an implicit call to A's constructor on the first line of B's constructor.
Consider the following line of client code:

B b = new B ();

This invokes B's constructor. Before B's constructor can allocate memory for member object, A's constructor is run. A's constructor calls
( new Thread ( this ) ).start ();
This line starts a new thread running A's method run() (and this could happen even before control is returned to A's constructor which will finish before control is
returned to B's constructor). A.run () calls method doSomething(). While there is a method doSomething() in class A, there is also a method doSomething() in class B. Guess what? Class B's doSomething() method overrides class A's doSomething() method and is thus called in place of class A's doSomething() method (we
are constructing an instance of class B after all).
Class B's doSomething() method calls object.wait().
But, class B's constructor might not even have finished executing. Thus, object may not have been initialized and the call to object.wait() could produce a NullPointerException. It is important to add that this will not always happen. Under some JVMs, it is possible that this will never happen. Then again, it could happen. This is an instance of a RACE CONDITION. Race Conditions happen when data is not perfectly protected with synchronization.


Сабина

Return to “Вопросы и новости IT”