スレッドの作成方法
マルチスレッドの作成方法をまとめます。マルチスレッドを実現するには4つの方法があります。次に、作成方法を詳しく説明します
1. Thread クラスを継承し、run() メソッドをオーバーライドします
2. Runnable インターフェイスを実装し、run() メソッドをオーバーライドします
3. 実装します呼び出し可能なインターフェイスをオーバーライドし、call< v>Method
4. スレッド プール (より複雑なため、後で説明します)
注: どのメソッドが使用されるかは関係ありません。スレッドを作成するには、Thread クラスによって提供される start を使用してスレッドを開始します。() メソッド。
1. Thread クラスを継承し、run メソッドをオーバーライドします。
class MyThread extends Thread { private String title; private int ticket = 20; public MyThread(String title) { this.title = title; } public void run() { //放每个线程的子任务 while (ticket > 0) { System.out.println("当前线程为"+title+",还剩下"+ticket--+"票"); } } } public class ThreadTest { public static void main(String[] args) { MyThread myThread1 = new MyThread("黄牛A"); MyThread myThread2 = new MyThread("黄牛B"); MyThread myThread3 = new MyThread("黄牛C"); myThread1.start(); myThread2.start(); myThread3.start(); } }
2. Runnable インターフェイスを実装し、オーバーライドします。 run メソッド
class MyRunnable implements Runnable{ @Override public void run() { for(int i =0;i <10;i++){ System.out.println(Thread.currentThread().getName()+"、i="+i); } } } public class RunnableTest { public static void main(String[] args) { Runnable runnable =new MyRunnable(); //向上转型 new Thread(runnable,"线程A").start(); //设置线程名字 new Thread(runnable).start(); //没有设置线程名字,则是系统默认从 Thread-(0,1,2...) Thread thread1 = new Thread(runnable); thread1.setName("线程B"); //调用setName()设置名字 thread1.start(); } }
スレッド名を作成する 3 つの方法は次のとおりです:
(1) 括弧の直後に名前を追加します
(2) setName を呼び出します() 名前を設定します
(3) 名前が設定されていない場合、システムはデフォルトで Thread-(0,1,2....)
## を使用します。
2. FutureTask オブジェクトを生成します 3. スレッド パスを作成する FutureTask オブジェクトを入力します 3 つの比較スレッドを作成する方法 1 .Thread クラスの継承には、単一継承の制限があります。比較的言えば、Runnable インターフェイスを実装する方がより柔軟であり、Thread クラス自体も Runnable インターフェイスを実装して、リアル スレッド クラス JAVA ビデオ チュートリアル 以上がマルチスレッド - スレッドの作成の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。class MyCallable implements Callable<String>{
private int ticket =20;
@Override
public String call() throws Exception {
while(ticket > 0){
System.out.println(Thread.currentThread().getName()+"还剩下"+ticket--+"票");
}
return "票卖完了,再见";
}
}
public class CallableTest {
public static void main(String[] args) throws ExecutionException, InterruptedException {
//产生Callable对象
MyCallable myCallable = new MyCallable();
//产生FutureTask对象
FutureTask futureTask = new FutureTask(myCallable);
Thread thread = new Thread(futureTask);
thread.start();
System.out.println(futureTask.get()); //接收Callable对象的返回值
}
}