ホームページ >Java >&#&はじめる >Javaでマルチスレッドを実装する方法

Javaでマルチスレッドを実装する方法

王林
王林転載
2020-09-30 15:56:352084ブラウズ

Javaでマルチスレッドを実装する方法

#要件: マルチスレッド プログラムを実装したいです


#(推奨チュートリアル:

java コース

)実装方法:

スレッドはプロセスに依存するため、最初にプロセスを作成する必要があります

そして、プロセスはシステムによって作成されるため、システム関数を呼び出してプロセスを作成する必要があります

ただし、Java はシステム関数を直接呼び出すことができないため、マルチスレッド プログラムを直接実装する方法はありません。

# ただし、Java は C/C で記述されたプログラムを直接呼び出して、マルチスレッド プログラムを実装できます。スレッド プログラム

C/C はシステム関数を呼び出してプロセスを作成し、次に Java は次のようなものを呼び出して、使用するクラスを提供するためです。マルチスレッドを実装できます

#それでは、Java が提供するクラスとは何でしょうか?

Thread

API を見ると、マルチスレッドを実装するには 2 つの方法があることがわかります

方法 1: Thread クラスを継承する

手順:

A: カスタム クラス MyThread は Thread クラスを継承します。

B: MyThread クラスの run() をオーバーライドします。

run() メソッドがあるのはなぜですか?

クラスのすべてのコードをスレッドで実行する必要があるわけではありません

現時点では、複数のスレッドで実行できるコードを区別するために、Java では run() メソッドが提供されています。スレッド クラス

スレッドによって実行されるコードを含めるために使用されます

#C: オブジェクトの作成

#D: スレッドの開始

##例:

package cn.itcast_01;
public class 如何实现多线程及其多线程方式1的思路 {
public static void main(String[] args) {
// 创建线程对象
MyThread my = new MyThread();
//启动线程
my.run();
my.run();
//调用run();方法为什么是单线程呢?
//因为run();方法的直接调用其实就相当于普通方法调用,所有你看到的是单线程的效果
//想要看到多线程的效果,就必须说另一个方法:start()
//面试题run()和start()的区别
//run():仅仅是封装被线程执行的代码,直接调用依旧是普通方法
//start():首先启动了线程,然后再由JVM去调用该线程的run()方法
MyThread my = new MyThread();
my.start();
my.start();//IllegalThreadStateException:非法的线程状态异常
//为什么呢?
//因为这是相当于my线程别调用了两次。而不是两个线程的启动
//创建两个线程
MyThread my1 = new MyThread();
MyThread my2 = new MyThread();
my1.start();
my2.start();
}
}

関連する推奨事項 :

Java の入門

以上がJavaでマルチスレッドを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。