Chapter 11 Многопоточное программирование Flashcards
Каким образом имеющиеся в Java средства многопоточного программирования обеспечивают создание более эффективных программ?
Средства многопоточного программирования дают возможность использовать периоды простоя, возникающие практически в любой программе. Когда операции в одном потоке по каким-то причинам приостановлены, выполняются другие потоки. В многоядерных системах два и более потока могу выполняться одновременно.
Для поддержки многопоточного программирования в Java предусмотрены класс и интерфейс
Класс Thread и интерфейс Runnable.
В каких случаях при создании выполняемого объекта следует отдать предпочтение расширению касса Thread, а не реализации интерфейса Runnable?
Подклассы, производные от класса Thread, целесообразно создавать в тех случаях, когда помимо метода run ( ) требуется переопределить другие методы данного класса.
Покажите, как с помощью метода join ( ) можно организовать ожидание завершения потокового объекта MyThrd.
MyThrd.join();
Покажите, как установить приоритет потока MyThrd на три уровня выше нормального приоритета.
MyThrd.setPriority(Thread.NORM_PRIORITY+3);
Что произойдет, если в объявлении метода указать ключевое слово synchronized?
Когда такой метод получает управление, вызывающий поток активизирует монитор, что приводит к блокированию объекта. Если объект блокирован, он недоступен из другого потока, а кроме того, его нельзя вызвать из других синхронизированных методов, определенных в классе данного объекта. Когда выполнение синхронизированного метода завершается, монитор разблокирует объект, что позволяет другому потоку использовать этот метод.
Методы wait ( ) и notify ( ) предназначены для обеспечения
Взаимодействия потоков
Почему в новых программах на Java не следует применять методы suspend( ) , resume( ) и stop() ?
Методы suspend () , resume ( ) и stop ( ) не рекомендуется применять, поскольку они могут стать причиной серьезных осложнений при выполнении программы. (for example, из-за возможной ложной активации)
С помощью какого метода из класса Thread можно получить имя потока?
С помощью метода getName()
Какое значение возвращает метод isAlive ( ) ?
Этот метод возвращает значение true, если поток, для которого он вызывается, все еще выполняется. В противном случае он возвращает значение false