ホームページ >Java >&#&チュートリアル >Javaでマルチスレッドを作成するにはどうすればよいですか? (詳細)
この記事の内容は、Java でマルチスレッドを作成する方法についてです。 (詳細)、必要な友人が参考になれば幸いです。
スレッドは、システムによって個別にスケジュールされディスパッチされる基本単位です。システムリソースを所有するのではなく、動作中に不可欠なリソースのみを所有しますが、プロセスが所有するすべてのリソースを同じプロセスに属する他のスレッドと共有できます。
表面上は、マルチスレッドですが、実際には CPU が交互に高速に実行されます。
##マルチスレッド (並列および同時実行)public class TestThread { public static void main(String[] args) { //4.创建Thread的子类对象 MyThread myThread = new MyThread(); //5.启动线程,注意这里使用的是start而不是run方法 myThread.start(); for (int i = 0; i < 10000; i ++) { System.out.println("This is main thread"); } } } //1.继承Thread class MyThread extends Thread{ //2.重写run方法 @Override public void run() { super.run(); //3.线程方法中要执行的代码,可以根据自己的需求填写 for(int i = 0 ; i < 10000 ; i ++ ) { System.out.println("This is MyThread thread "); } } }Java でマルチスレッドを作成する方法(1) Thread クラスを継承し、start メソッドを呼び出す Thread は Runnable インターフェイスを実装します
マルチスレッドを実装するには、スレッドのサブクラスになり、run メソッドをオーバーライドする必要があります。スレッドを開始するとき、呼び出されるのは run メソッドではなく start メソッドであることに注意してください。 run メソッドが呼び出された場合、通常のメソッドと同等であり、スレッドはオープンされません
public class Thread implements Runnable
public class TestThread { public static void main(String[] args) { MyThread myThread = new MyThread(); //注意这里使用的是start而不是run方法 myThread.start(); for (int i = 0; i < 10000; i ++) { System.out.println("This is main thread"); } } } class MyThread extends Thread{ @Override public void run() { super.run(); for(int i = 0 ; i < 10000 ; i ++ ) { System.out.println("This is MyThread thread "); } } }(2) runnable インターフェイスを実装し、run メソッドを書き換えますメソッドは 1 つだけですRunnable では、run()、スレッド起動メソッドは Thread に存在します。
そして、最終的にスレッドを起動するときは、Thread のサブクラス オブジェクトを通じてスレッドを起動する必要があります。
public class TestRunnable { public static void main(String[] args) { //4.创建Thread的子类对象 Runnable myRunnable = new MyRunnable(); //5.启动线程,创建Thread并把runnable的子类作为构造参数 new Thread(myRunnable).start(); for (int i = 0; i < 10000; i ++) { System.out.println("This is main thread"); } } } //1.实现runnable接口 class MyRunnable implements Runnable { //2.重写run方法 @Override public void run() { //3.线程方法中要执行的代码,可以根据自己的需求填写 for(int i = 0 ; i < 10000 ; i ++ ) { System.out.println("This is MyRunnable thread "); } } }Callable インターフェイスを実装します スレッドを実装するには、スレッドと実行可能ファイルの継承に加えて、Callable インターフェイスを実装することもできます。 Callable インターフェイスは、スレッドの実行本体として使用できる call() メソッドを提供します。このメソッドは run() と同じ機能を持ちます。ただし、call() メソッドは run() メソッドよりも多くの戻り値を持ち、call() メソッドはスローされる例外を宣言できます。では、Callable スレッドを開始するにはどうすればよいでしょうか? Callable インターフェイスは Runnable インターフェイスのサブインターフェイスではないため、Callable オブジェクトを Thread の構築パラメータとして使用することはできません。 Java には、Runnable、Future を実装するもう 1 つのインターフェイスである RunnableFuture インターフェイスが用意されています。
Callableinterface
call メソッド。スレッドの run メソッドと同等です。違いは、call メソッドで戻り値が許可されることです。
public class CallableDemo { public static void main(String[] args) { //3.把Callable实现类对象作为构造参数传入FutureTask创建FutureTask对象。 FutureTask<UUID> futureTask = new FutureTask<UUID>(new MyCallable()); //4.把FutureTask对象作为构造参数传入Thread,并开启线程 new Thread(futureTask).start(); try { System.out.println(futureTask.get()); } catch (InterruptedException e) { e.printStackTrace(); } catch (ExecutionException e) { e.printStackTrace(); } } } //1. 实现**Callable**接口 class MyCallable implements Callable<UUID> { //2.重写**call**方法,相当于thread中的run方法。不同的是call方法允许有返回值 @Override public UUID call() throws Exception { //生成随机数 return UUID.randomUUID(); } }
Runnableの実装
public void run() { if (this.target != null) { this.target.run(); }
Callable インターフェイスを実装します。
使用法と拡張の点で
以上がJavaでマルチスレッドを作成するにはどうすればよいですか? (詳細)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。