この記事では、java に関する関連知識を紹介します, 主にスレッドに関連する問題を整理します. スレッド (スレッド) はプログラム内の実行パスであり, 私たちがよく知っている主要なメソッドは実際には別の実行パス。プログラム内に実行パスが 1 つだけある場合、そのプログラムはシングルスレッド プログラムです。見てみましょう。皆さんのお役に立てれば幸いです。
推奨学習: 「java ビデオ チュートリアル 」
スレッドはプログラム内の実行パスです。私たちがよく知っているメインと呼んでいるものです。メソッドは実際には別の実行パスです。プログラム内に実行パスが 1 つだけある場合、プログラムは シングルスレッド プログラムになります。スレッドが 1 つであるため、複数のスレッドも存在します。リテラル意味は理解できますが、「単一のスレッドに対してソフトウェアやハードウェア上で複数の処理を実行する技術」であり、マルチスレッドの利点は、CPU 使用率が向上することです。マルチスレッド プログラムでは、1 つのスレッドが待機する必要がある場合、CPU は待機する代わりに他のスレッドを実行できるため、プログラムの効率が大幅に向上します。 マルチスレッドの作成
public class ThreadDemo01 { public static void main(String[] args) { MyThread myThread1 = new MyThread(); myThread1.start(); for (int i = 0; i < 3; i++) { System.out.println("主线程正在执行~~"); } } } class MyThread extends Thread{ @Override public void run() { for (int i = 0; i < 3; i++) { System.out.println("子线程正在执行~~"); } } } //输出结果(不唯一): //主线程正在执行~~ //主线程正在执行~~ //主线程正在执行~~ //子线程正在执行~~ //子线程正在执行~~ //子线程正在执行~~
方法 1 の長所と短所:
長所: コーディングが簡単;1. Runnable インターフェイスを実装するスレッド タスク クラス MyRunnable を定義し、 run() メソッドをオーバーライドします;
2. MyRunnable オブジェクトを作成します;
3. MyRunnable タスク オブジェクトを処理のために Thread に渡します;
4. start( を呼び出します) ) スレッドを開始するスレッド オブジェクトのメソッド;
Method | |||||||||||||||||||||||||||||
現在のスレッドにすることができます。 名前を指定します。 | |||||||||||||||||||||||||||||
Runnable オブジェクトをカプセル化し、スレッド オブジェクトにします。 | #public Thread (Runnable target, String name) | ||||||||||||||||||||||||||||
方法名称 | 说明 | |
public FutureTask<>(Callable call) | 把Callable对象封装成FutureTask对象 | |
public V get() throws Exception | 获取线程执行call方法返回的结果 |
方式 | 优点 | 缺点 |
继承Thread类 | 编程比较简单,可以直接使用Thread类中的方法 | 扩展性较差,不能再继承其他的类,不能返回线程执行的结果 |
实现Runnable接口 | 扩展性强,实现该接口的同时还可以继承其他的类 | 编程相对复杂,不能返回线程执行的结果 |
实现Callable接口 | 扩展性强,实现该接口的同时还可以继承其他的类,可以得到线程的执行结果 | 编程相对复杂 |
方法名称 | 说明 |
String getName() | 获取当前线程的名称,默认线程名称是Thread-索引 |
void setName(String name) | 将此线程更改为指定的名称,通过构造器也可以设置线程名称 |
简单地通过一段代码让大家能够清晰地了解这个代码该如何使用:
public class ThreadDemo04 { public static void main(String[] args) throws Exception { thread thread1 = new thread(); thread1.setName("1号子线程"); thread1.start(); thread thread2 = new thread(); thread2.setName("2号子线程"); thread2.start(); } } class thread extends Thread { @Override public void run() { for (int i = 0; i < 3; i++) { System.out.println(this.getName()+"正在执行任务"+i); } } } //输出结果: //2号子线程正在执行任务0 //1号子线程正在执行任务0 //2号子线程正在执行任务1 //1号子线程正在执行任务1 //2号子线程正在执行任务2 //1号子线程正在执行任务2
方法名称 | 说明 |
public static void sleep(long time) | 让当前线程休眠指定的时间后再继续执行,单位为毫秒 |
public class ThreadDemo05 { public static void main(String[] args) throws Exception { for (int i = 0; i < 5; i++) { System.out.println(i); if (i==3){ Thread.sleep(5000); } } } } //输出结果: //1 //2 //3 //在输出过3以后,等待5秒之后再进行输出 //4
推荐学习:《java视频教程》
以上がJava のスレッドを理解する方法を理解するための 1 つの記事の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。