#Java でのマルチスレッド
3036 ワード
マルチスレッド
マルチスレッドは、CPU の使用率を最大化するために、プログラムの 2 つ以上の部分を同時に実行できるようにする Java の機能です.このようなプログラムの各部分はスレッドと呼ばれます.したがって、スレッドはプロセス内の軽量プロセスです.
スレッドは、次の 2 つのメカニズムを使用して作成できます。
1.Extending the Thread class
2.Implementing the Runnable Interface
Thread クラスの拡張
Thread クラスの拡張によるスレッドの作成
java.lang.Thread クラスを拡張するクラスを作成します.このクラスは、Thread クラスで使用可能な run() メソッドをオーバーライドします.スレッドは、run() メソッド内で活動を開始します.新しいクラスのオブジェクトを作成し、start() メソッドを呼び出してスレッドの実行を開始します. Start() は、Thread オブジェクトで run() メソッドを呼び出します.
例:
class MultithreadingDemo extends Thread {
public void run()
{
試す {
//実行中のスレッドを表示
System.out.println(
"スレッド"+ Thread.currentThread().getId()
+ "実行中");
}
キャッチ (例外 e) {
//例外を投げる
System.out.println("例外がキャッチされました");
}
}
}
//メインクラス
パブリック クラス マルチスレッド {
public static void main(String[] args)
{
int n = 8;//スレッド数
for (int i = 0; i < n; i++) {
MultithreadingDemo オブジェクト
= new MultithreadingDemo();
object.start();
}
}
}
出力
スレッド 15 が実行中です
スレッド 14 が実行中です
スレッド 16 が実行中です
スレッド 12 が実行中です
スレッド 11 が実行中です
スレッド 13 が実行中です
スレッド 18 が実行中です
スレッド 17 が実行中です
実行可能なインターフェースの実装
Runnable Interface 実装によるスレッド作成
java.lang.Runnable インターフェイスを実装し、run() メソッドをオーバーライドする新しいクラスを作成します.次に、Thread オブジェクトをインスタンス化し、このオブジェクトで start() メソッドを呼び出します.
//実装によるスレッド作成の Java コード
//ランナブル インターフェイス
クラス MultithreadingDemo は Runnable を実装します {
public void run()
{
試す {
//実行中のスレッドを表示
System.out.println(
"スレッド"+ Thread.currentThread().getId()
+ "実行中");
}
キャッチ (例外 e) {
//例外を投げる
System.out.println("例外がキャッチされました");
}
}
}
//メインクラス
クラスマルチスレッド{
public static void main(String[] args)
{
int n = 8;//スレッド数
for (int i = 0; i < n; i++) {
スレッド オブジェクト
= new Thread(new MultithreadingDemo());
object.start();
}
}
}
出力
スレッド 13 が実行中です
スレッド 11 が実行中です
スレッド 12 が実行中です
スレッド 15 が実行中です
スレッド 14 が実行中です
スレッド 18 が実行中です
スレッド 17 が実行中です
スレッド 16 が実行中です
スレッド クラスと実行可能なインターフェイス
1.Extending the Thread class
2.Implementing the Runnable Interface
Thread クラスの拡張によるスレッドの作成
java.lang.Thread クラスを拡張するクラスを作成します.このクラスは、Thread クラスで使用可能な run() メソッドをオーバーライドします.スレッドは、run() メソッド内で活動を開始します.新しいクラスのオブジェクトを作成し、start() メソッドを呼び出してスレッドの実行を開始します. Start() は、Thread オブジェクトで run() メソッドを呼び出します.
例:
class MultithreadingDemo extends Thread {
public void run()
{
試す {
//実行中のスレッドを表示
System.out.println(
"スレッド"+ Thread.currentThread().getId()
+ "実行中");
}
キャッチ (例外 e) {
//例外を投げる
System.out.println("例外がキャッチされました");
}
}
}
//メインクラス
パブリック クラス マルチスレッド {
public static void main(String[] args)
{
int n = 8;//スレッド数
for (int i = 0; i < n; i++) {
MultithreadingDemo オブジェクト
= new MultithreadingDemo();
object.start();
}
}
}
出力
スレッド 15 が実行中です
スレッド 14 が実行中です
スレッド 16 が実行中です
スレッド 12 が実行中です
スレッド 11 が実行中です
スレッド 13 が実行中です
スレッド 18 が実行中です
スレッド 17 が実行中です
実行可能なインターフェースの実装
Runnable Interface 実装によるスレッド作成
java.lang.Runnable インターフェイスを実装し、run() メソッドをオーバーライドする新しいクラスを作成します.次に、Thread オブジェクトをインスタンス化し、このオブジェクトで start() メソッドを呼び出します.
//実装によるスレッド作成の Java コード
//ランナブル インターフェイス
クラス MultithreadingDemo は Runnable を実装します {
public void run()
{
試す {
//実行中のスレッドを表示
System.out.println(
"スレッド"+ Thread.currentThread().getId()
+ "実行中");
}
キャッチ (例外 e) {
//例外を投げる
System.out.println("例外がキャッチされました");
}
}
}
//メインクラス
クラスマルチスレッド{
public static void main(String[] args)
{
int n = 8;//スレッド数
for (int i = 0; i < n; i++) {
スレッド オブジェクト
= new Thread(new MultithreadingDemo());
object.start();
}
}
}
出力
スレッド 13 が実行中です
スレッド 11 が実行中です
スレッド 12 が実行中です
スレッド 15 が実行中です
スレッド 14 が実行中です
スレッド 18 が実行中です
スレッド 17 が実行中です
スレッド 16 が実行中です
スレッド クラスと実行可能なインターフェイス
Runnable Interface 実装によるスレッド作成
java.lang.Runnable インターフェイスを実装し、run() メソッドをオーバーライドする新しいクラスを作成します.次に、Thread オブジェクトをインスタンス化し、このオブジェクトで start() メソッドを呼び出します.
//実装によるスレッド作成の Java コード
//ランナブル インターフェイス
クラス MultithreadingDemo は Runnable を実装します {
public void run()
{
試す {
//実行中のスレッドを表示
System.out.println(
"スレッド"+ Thread.currentThread().getId()
+ "実行中");
}
キャッチ (例外 e) {
//例外を投げる
System.out.println("例外がキャッチされました");
}
}
}
//メインクラス
クラスマルチスレッド{
public static void main(String[] args)
{
int n = 8;//スレッド数
for (int i = 0; i < n; i++) {
スレッド オブジェクト
= new Thread(new MultithreadingDemo());
object.start();
}
}
}
出力
スレッド 13 が実行中です
スレッド 11 が実行中です
スレッド 12 が実行中です
スレッド 15 が実行中です
スレッド 14 が実行中です
スレッド 18 が実行中です
スレッド 17 が実行中です
スレッド 16 が実行中です
スレッド クラスと実行可能なインターフェイス
Reference
この問題について(#Java でのマルチスレッド), 我々は、より多くの情報をここで見つけました https://dev.to/ritwin59/multithreading-in-java-5265テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol