マルチスレッド - スレッドの作成
スレッドの作成方法
マルチスレッドの作成方法をまとめます。マルチスレッドを実現するには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对象的返回值
}
}

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









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

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

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

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

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

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

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

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