Комментарии (5)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Нямка19 уровень, Зажопинск
4 May, 19:43
Любой класс в Java содержит неявно заданное статическое поле class типа Class, которое представляет свой класс (содержит всю необходимую о нем информацию). Поскольку мы используем блок синхронизации внутри статического метода getFund(), то в качестве объекта, передаваемого блоку синхронизации, необходимо использовать экземпляр такой статической переменной нашего класса IMF, к которому можно обратиться также, как и к любой статической переменной, используя для доступа ИмяКласса.ИмяПеременной (в нашем случае IMF.class).
Нямка19 уровень, Зажопинск
28 April, 21:45
Создать поток можно унаследовав свой класс от класса Thread и переопределив в нем метод run(). Но сам он, конечно, не запустится. Для этого у нашего объекта вызываем метод start(). Для приостановки выполнения текущего потока на какое-то время, используем метод sleep(). метод sleep() — статический: он усыпляет текущий поток. То есть тот, который работает в данный момент. Еще один важный нюанс: поток в состоянии сна можно прервать. В таком случае в программе возникнет исключение InterruptedException. Метод join() приостанавливает выполнение текущего потока до тех пор, пока не завершится другой поток. Что произойдет, если у потока вызвать метод interrupt()? Есть 2 варианта: Если объект находился в этот момент в состоянии ожидания, например, join или sleep, ожидание будет прервано, и программа выбросит InterruptedException. Если же поток в этот момент был в работоспособном состоянии, у объекта будет установлен boolean-флаг interrupted.
Нямка19 уровень, Зажопинск
28 April, 19:20
volatile означает, что значение этой переменной может изменяться другими потоками. Чтобы как следует понять, что делает ключевое слово volatile, полезно разобраться, как потоки обрабатывают обычные переменные. В целях повышения производительности спецификация языка Java допускает сохранение в JRE локальной копии переменной для каждого потока, который на нее ссылается. Такие «локальные» копии переменных напоминают кэш и помогают потоку избежать обращения к главной памяти каждый раз, когда требуется получить значение переменной. Но давайте посмотрим, что происходит в следующем сценарии: запускаются два потока, и один из них считывает переменную A как 5, а второй ― как 10. Если значение переменной А изменилось с 5 на 10, то первый поток не узнает об изменении и будет хранить неправильное значение A. Однако если переменная А помечена как volatile, то когда бы поток не считывал значение A, он будет обращаться к главной копии A и считывать ее текущее значение. Локальный кэш потока имеет смысл в том случае, если переменные в ваших приложениях не будут изменяться извне. Если это не так, то знать, что делает ключевое слово volatile, очень полезно.
Нямка19 уровень, Зажопинск
26 April, 17:39
For each https://vertex-academy.com/tutorials/ru/cikl-for-each/
Нямка19 уровень, Зажопинск
22 April, 19:11
Блоки инициализации https://vertex-academy.com/tutorials/ru/bloki-inicializacii-v-java-chast-1