Spec-Zone .ru
спецификации, руководства, описания, API
|
Приложение, которое создает экземпляр Thread
должен обеспечить код, который будет работать в том потоке. Есть два способа сделать это:
Runnable
объект. Runnable
интерфейс определяет единственный метод, run
, предназначенный, чтобы содержать код, выполняемый в потоке. Runnable
объект передают к Thread
конструктор, как в HelloRunnable
пример: public class HelloRunnable implements Runnable { public void run() { System.out.println("Hello from a thread!"); } public static void main(String args[]) { (new Thread(new HelloRunnable())).start(); } }
Thread
. Thread
САМ class реализует Runnable
, хотя run
метод ничего не делает. Приложение может разделить на подклассы Thread
, обеспечение его собственной реализации run
, как в HelloThread
пример: public class HelloThread extends Thread { public void run() { System.out.println("Hello from a thread!"); } public static void main(String args[]) { (new HelloThread()).start(); } }
Заметьте, что оба примера вызывают Thread.start
чтобы начать новую дискуссию.
Какую из этих идиом следует использовать? Первая идиома, которая использует a Runnable
возразите, является более общим, потому что Runnable
объект может разделить на подклассы class кроме Thread
. Вторую идиому легче использовать в простых приложениях, но ограничивается фактом, что Вашей задачей class должен быть потомок Thread
. Этот урок сосредотачивается на первом подходе, который отделяется Runnable
задача от Thread
объект, который выполняет задачу. Мало того, что этот подход более гибок, но и это применимо к высокоуровневым API управления потоком, покрытым позже.
Thread
class определяет много методов, полезных для управления потоком. Они включают static
методы, которые предоставляют информацию о, или влияют на состояние, поток, вызывающий метод. Другие методы вызываются от других потоков, включенных в управление потоком и Thread
объект. Мы исследуем некоторые из этих методов в следующих разделах.