Blake wrote:http://www.alphaworks.ibm.com/tech/mbeaninspector etc
"Это все о нем" (JMX MBeans). Хотя кто его знает, может и сперли идею этих тулов у IBM
Сабина
Blake wrote:http://www.alphaworks.ibm.com/tech/mbeaninspector etc
Таких?tengiz wrote: ...в смысле привнесения в параллельное программирование качественных и высокоэффективных абстракций.
WildVlad wrote:hooch wrote:
А вот уже компилятор может полагаться на среду исполнения.
Ну а когда уже и компилятор будет знать о авто-распараллеливании, то и определённые индивидуумы могут попытаться это использовать
Sabina wrote:Хотя кто его знает, может и сперли идею этих тулов у IBM
WildVlad wrote:*do not start thread from constructor, etc.
Спорное утверждение. Грозит только потерей ссылки на нить при исключении ниже по тексту конструктора.
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.
Blake wrote:...Таких?...
tengiz wrote:синхронные и асинхронные методы и так называемые аккорды, а насколько получается гибко и выразительно.
VladDod wrote:hooch wrote:Автораспараллеливание средствами языка программирования???
Модула
WildVlad wrote:Кстати, они JDK1.5 не собираются назвать как-нить типа Java3? А то изменений уже порядком набирается %)
tengiz wrote:
.........
Иначе Java на серверах мало отличается от C/C++. Я только это и имел в виду. Больше ровным счётом ничего. Практический вывод который из этого следует для меня лично - никакого особенного интереса к Java на серверах у меня нет и пока быть не может. А жаль.
Хотя если Си шарп снизойдёт до реализации довольно старых красивых идей, которые с некоторых пор интересуют публику в MS Research - см.Introduction to Polyphonic C#, то может и Java тоже зачешется и рванёт в том же направлении. Вот тогда будет уже поинтереснее.
<added>
Вот чуть поинтереснее ссылка на PDF о Modern Concurrency Abstractions for C#.
</added>
Code: Select all
Join Java:
public class OnePlaceBuffer {
public Object get() & put(Object o) {
return o;
}
}
PC#:
public class Buffer {
public String get() & public async put(String s) {
return s;
}
}
tengiz wrote:vc, авторы текста о полифонии в До-диезе ясно пишут о том, откуда идут эти идеи, а также и о том, что похожие вещи были примерно в то же время предложены для Явы. В ссылках и в тексте соблюдены все необходимые приличия. А догонять, очевидно, будут того, кому первому посчастливится практически реализовать удобные, ясные, понятные и, разумеется, допускающие эффективную реализацию высокоуровневые абстракции для параллельного программирования.
Я лично очень мало сомневаюсь в практической реализуемости подобных идей. Это всего лишь вопрос времени и ресурсов. Задача уже давно созрела и необходимость в подобных расширениях существующих языков будет только усиливаться.
NNemo wrote:MS легки на помине!
http://www.theserverside.net/news/threa ... d_id=27350