ホームページ Java &#&チュートリアル マルチスレッド - スレッドの作成

マルチスレッド - スレッドの作成

Aug 22, 2019 pm 04:04 PM

スレッドの作成方法

マルチスレッドの作成方法をまとめます。マルチスレッドを実現するには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....)


## を使用します。

## 3. Callable インターフェイスを実装し、call メソッドをオーバーライドします

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对象的返回值
    }
}
ログイン後にコピー
1. まず Callable オブジェクトを生成します

2. FutureTask オブジェクトを生成します

3. スレッド パスを作成する FutureTask オブジェクトを入力します

#4. Callable インターフェイスから受け取った戻り値は、Future の get() メソッドです

3 つの比較スレッドを作成する方法

1 .Thread クラスの継承には、単一継承の制限があります。比較的言えば、Runnable インターフェイスを実装する方がより柔軟であり、Thread クラス自体も Runnable インターフェイスを実装して、リアル スレッド クラス

2. Runnable インターフェイスを実装すると、プログラム共有をより適切に実現できます。コンセプト

3. Callable インターフェイスは、戻り値が必要な場合に使用されます

明らかな場合は、上記内容に誤りがありましたら、ご指摘いただければ幸いです。ありがとう!

その他の関連コンテンツについては、PHP 中国語 Web サイトをご覧ください:

JAVA ビデオ チュートリアル

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

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

8コア16スレッドとはどういう意味ですか? 8コア16スレッドとはどういう意味ですか? Feb 02, 2023 am 11:26 AM

8 コアは、CPU に 8 つの物理コアがあることを意味し、16 スレッドは、CPU が同時にタスクを処理できる最大 16 のスレッドを持つことができることを意味します。コアとスレッドの数は、コンピュータ CPU の重要なパフォーマンス指標です。CPU のコア数が多いほど、処理速度は高くなります。スレッドの数が多いほど、複数のプログラムを同時に実行しやすくなります。スレッドの数は、ある瞬間に CPU が同時に実行できる数、つまり並列処理されるタスクの数に相当するためです。マルチスレッドにより、広範囲にわたる問題の順序が狂ったスーパースカラー処理を最大化し、プロセッサ コンピューティング コンポーネントの利用率を向上させ、データ相関やキャッシュ ミスによって引き起こされるメモリ アクセスの遅延を軽減できます。

C++ 同時プログラミング: スレッドの枯渇と優先順位の逆転を回避するには? C++ 同時プログラミング: スレッドの枯渇と優先順位の逆転を回避するには? May 06, 2024 pm 05:27 PM

スレッドの枯渇を回避するには、公平なロックを使用してリソースの公平な割り当てを確保するか、スレッドの優先順位を設定します。優先順位の逆転を解決するには、リソースを保持しているスレッドの優先順位を一時的に高める優先順位の継承を使用するか、リソースを必要とするスレッドの優先順位を高めるロック プロモーションを使用します。

C++ 同時プログラミング: スレッドの終了とキャンセルを行うには? C++ 同時プログラミング: スレッドの終了とキャンセルを行うには? May 06, 2024 pm 02:12 PM

C++ のスレッド終了およびキャンセル メカニズムには次のものがあります。 スレッド終了: std::thread::join() は、ターゲット スレッドが実行を完了するまで現在のスレッドをブロックします。 std::thread::detach() は、ターゲット スレッドをスレッド管理から切り離します。スレッドのキャンセル: std::thread::request_termination() はターゲット スレッドに実行の終了を要求します。 std::thread::get_id() はターゲット スレッド ID を取得し、std::terminate() とともに使用してターゲットを即座に終了できます。糸。実際の戦闘では、request_termination() によってスレッドが終了のタイミングを決定でき、join() によってメインラインでそれが保証されます。

Go言語のコルーチンとスレッドの違いは何ですか Go言語のコルーチンとスレッドの違いは何ですか Feb 02, 2023 pm 06:10 PM

違い: 1. スレッドは複数のコルーチンを持つことができ、プロセスは複数のコルーチンを単独で持つこともできます; 2. スレッドは同期メカニズムですが、コルーチンは非同期です; 3. コルーチンは最後の呼び出しの状態を保持できますが、スレッドは機能しません; 4. スレッドはプリエンプティブですが、コルーチンは非プリエンプティブです; 5. スレッドは分割された CPU リソースであり、コルーチンは組織化されたコード プロセスです コルーチンはホストして実行するためにスレッドを必要とします。

プログラム実行時の命令フローの最小単位は何ですか? プログラム実行時の命令フローの最小単位は何ですか? Aug 23, 2022 pm 02:16 PM

「スレッド」とは、プログラムを実行する際の命令の流れの最小単位です。プロセスは特定の独立した機能を持つプログラムを指し、スレッドはプロセスの一部であり、命令フローの実行状態を記述します。スレッドはプロセス内の命令実行フローの最小単位であり、基本単位です。 CPU のスケジューリング。スレッドはタスク (プログラムセグメント) の実行プロセスであり、メモリ空間を占有せず、プロセスのメモリ空間に含まれます。同じプロセス内では、複数のスレッドがプロセスのリソースを共有し、プロセスには少なくとも 1 つのスレッドがあります。

Java エラー: JavaFX スレッドスタックエラー、対処方法と回避方法 Java エラー: JavaFX スレッドスタックエラー、対処方法と回避方法 Jun 24, 2023 pm 05:52 PM

JavaFX アプリケーションの開発中に、JavaFX スレッドスタックエラーが頻繁に発生します。このようなエラーは重大度が異なり、プログラムの安定性やパフォーマンスに悪影響を与える可能性があります。プログラムが正常に動作することを保証するには、JavaFX スレッドスタックエラーの原因と解決策、およびこのエラーの発生を防ぐ方法を理解する必要があります。 1. JavaFX スレッドスタックエラーの原因 JavaFX はマルチスレッド UI アプリケーション フレームワークであり、バックグラウンド スレッドでプログラムを長時間実行できます。

Go言語におけるスレッドとプロセスの違いの分析 Go言語におけるスレッドとプロセスの違いの分析 Apr 03, 2024 pm 01:39 PM

Go 言語のプロセスとスレッド: プロセス: 独自のリソースとアドレス空間を持つ独立して実行されるプログラム インスタンス。スレッド: プロセス リソースとアドレス空間を共有するプロセス内の実行ユニット。特徴: プロセス: 高いオーバーヘッド、良好な分離、独立したスケジューリング。スレッド: 低いオーバーヘッド、共有リソース、内部スケジューリング。実際のケース: プロセス: 長時間実行されるタスクを分離します。スレッド: 大量のデータを同時に処理します。

MicrosoftはAIを活用したCopilotをWindows上のOutlookクラシックアプリに導入する計画 MicrosoftはAIを活用したCopilotをWindows上のOutlookクラシックアプリに導入する計画 Oct 19, 2023 pm 11:13 PM

Microsoftは、AIを活用した強力なCopilotツールを新しいアプリの独占機能として維持するつもりはないようだ。今回、同社は Windows 上の Outlook クラシック アプリに Copilot を導入する計画を発表したところです。同社の 365 ロードマップ Web サイトに掲載されているように、プレビューは来年 3 月に開始され、3 月まで現在のチャネルのデスクトップで世界中に展開されます。 Copilot は、大規模言語モデル (LLM) を使用して、電子メールの作成、文書の要約、言語の翻訳などのタスクを行うユーザーを支援する生産性ツールです。主な機能の 1 つは、メールを要約する機能です。

See all articles