Определения локальных функций внутри функции недопустимы в C.
См. Javadoc для Object.wait.
в частности «Текущий поток должен владеть монитором этого объекта . " и «[выбрасывает] IllegalMonitorStateException - если текущий поток не является владельцем монитора объекта». То есть вам нужно синхронизировать объект, который вы собираетесь вызвать, wait on.
, поэтому ваш код должен быть:
synchronized (available) {
available.wait();
}
Ни у одного из них нет преимущества в производительности или распределении памяти - они оба будут компилироваться в один и тот же байт-код.
Оператор import
указывает компилятору, где найти классы, на которые ссылается исходный код.
Однако есть преимущество импорта только по классам. Если в двух пакетах есть класс с одним и тем же именем, возникнет конфликт относительно того, на какой класс идет ссылка.
Одним из таких примеров является класс java.awt.List
и класс java.util.List
.
Допустим, мы хотим использовать java.awt.Panel
и java.util.List
. Если источник импортирует пакеты следующим образом:
import java.awt.*;
import java.util.*;
Тогда ссылка на класс List
будет неоднозначной:
List list; // Which "List" is this from? java.util? java.awt?
Однако,