Java は Thread クラスを使用してスレッドを表し、すべてのスレッド オブジェクトは Thread クラスまたはそのサブクラスのインスタンスである必要があります。 Java は、次の 3 つの方法でスレッドを作成できます。
1) Thread クラスを継承してスレッドを作成する
2) Runnable インターフェイスを実装してスレッドを作成する
3 ) Callable を使用する Future でスレッドを作成する
スレッドを作成するこれら 3 つの方法をそれぞれ見てみましょう。
Thread クラスを継承してスレッドを作成する手順は次のとおりです。
1]D Thread クラスのサブクラスを定義し、run() メソッドをオーバーライドします。クラスのメソッド本体は、スレッドが完了する必要があるタスクです。run() メソッドは、スレッド実行本体とも呼ばれます。
2] Thread サブクラスのインスタンスを作成します。つまり、スレッド オブジェクトを作成します。
3] スレッドを開始します。つまり、スレッドの start() メソッドを呼び出します。
例:public class MyThread extends Thread{//继承Thread类 public void run(){ //重写run方法 } } public class Main { public static void main(String[] args){ new MyThread().start();//创建并启动线程 } }
Runnable インターフェイスを実装してスレッドを作成する手順は次のとおりです:
1] の実装クラスを定義します。 Runnable インターフェイスであり、run() メソッドもオーバーライドします。この run() メソッドは、Thread の run() メソッドと同様、スレッドの実行本体です。2]Runnable 実装クラスのインスタンスを作成し、このインスタンスを Thread のターゲットとして使用して、Thread オブジェクトを作成します。この Thread オブジェクトは実際のスレッドです。Object3]3 番目の部分では、スレッドの start() メソッドを呼び出してスレッドを開始します。 object例:public class MyThread2 implements Runnable {//实现Runnable接口 public void run(){ //重写run方法 } } public class Main { public static void main(String[] args){ //创建并启动线程 MyThread2 myThread=new MyThread2(); Thread thread=new Thread(myThread); thread().start(); //或者 new Thread(new MyThread2()).start(); } }
Callable と Future を使用してスレッドを作成する手順は次のとおりです。
1] の実装クラスを作成します。 Callable インターフェイス、call() メソッドを実装し、実装クラスのインスタンスを作成します (java8 以降では、Lambda 式を直接使用して Callable オブジェクトを作成できます)。 2] FutureTask クラスを使用して Callable オブジェクトをラップします。FutureTask オブジェクトは、Callable オブジェクトの call() メソッドの戻り値をカプセル化します。3] FutureTask オブジェクトを作成して開始する Thread オブジェクトのターゲット Thread (FutureTask が Runnable インターフェイスを実装しているため)4] FutureTask オブジェクトの get() メソッドを呼び出して、子スレッドの実行後の戻り値を取得します終了例:public class Main { public static void main(String[] args){ MyThread3 th=new MyThread3(); //使用Lambda表达式创建Callable对象 //使用FutureTask类来包装Callable对象 FutureTask<Integer> future=new FutureTask<Integer>( (Callable<Integer>)()->{ return 5; } ); new Thread(task,"有返回值的线程").start();//实质上还是以Callable对象来创建并启动线程 try{ System.out.println("子线程的返回值:"+future.get());//get()方法会阻塞,直到子线程执行结束才返回 }catch(Exception e){ ex.printStackTrace(); } } }
Java 基本チュートリアル 列に注目してください。
以上がJavaでスレッドを作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。