ホームページ Java &#&チュートリアル Java スレッドを作成して開始する

Java スレッドを作成して開始する

Feb 28, 2017 am 10:29 AM

Java スレッドは、他のオブジェクトと同様のオブジェクト タイプです。スレッドは、java.lang.Thread クラスのインスタンス、またはこのクラスのサブクラスのインスタンスです。 Java スレッドはオブジェクト タイプであるだけでなく、コードを実行することもできます。

スレッドの作成と開始

スレッドの作成は次のように行うことができます:

Thread thread = new Thread();
ログイン後にコピー

Java スレッドを開始するには、次のように start メソッドを呼び出す必要があります:

thread.start();
ログイン後にコピー

この例ではどのスレッドがコードを実行するかは指定しません。このスレッドは開始後すぐに停止されます。

このスレッドが実行するコードを指定するには 2 つの方法があります。最初の方法は、スレッドのサブクラスを作成し、 run() メソッドをオーバーライドすることです。 2 番目の方法は、Runnable インターフェイスを実装するオブジェクトを Thread コンストラクターに渡すことです。両方の方法については以下で説明します。

スレッド サブクラス

スレッドが実行するコードを指定する最初の方法は、スレッド サブクラスを作成し、run() メソッドをオーバーライドすることです。この run() メソッドは、start() メソッドを呼び出した後、このスレッドによって実行されます。以下に例を示します:

public class MyThread extends Thread {

    public void run(){
       System.out.println("MyThread running");
    }
  }
ログイン後にコピー

上記のスレッドを作成して開始するには、次のように実行できます:

 MyThread myThread = new MyThread();
  myTread.start();
ログイン後にコピー


スレッドが開始されるとすぐに、start() メソッドが戻ります。 run() メソッドが終了するまで待機しません。この run() メソッドは異なる CPU によって実行されます。この run() メソッドが実行されると、「MyThread running」というテキスト コンテンツが出力されます。

次のようなスレッドの匿名サブクラスを作成することもできます:

Thread thread = new Thread(){
    public void run(){
      System.out.println("Thread Running");
    }
  }

  thread.start();
ログイン後にコピー


この例の結果は上記と同じになります。

Runnable インターフェースの実装

スレッドが実行するコードを指定する 2 番目の方法は、java.lang.Runnable インターフェースを実装するクラスを作成することです。この Runnable オブジェクトはスレッドによって実行できます。

ここに例を示します:

public class MyRunnable implements Runnable {

    public void run(){
       System.out.println("MyRunnable running");
    }
  }
ログイン後にコピー

run メソッドをスレッドで実行するには、MyRunnable インスタンスをスレッドのコンストラクターに渡す必要があります。以下に例を示します:

Thread thread = new Thread(new MyRunnable());
   thread.start();
ログイン後にコピー

このスレッドが開始されると、独自の run メソッドを実行する代わりに、MyRunnable の run メソッドを呼び出します。上の例では、「MyRunnable running」というテキストが出力されます。

次のような匿名実装を作成することもできます:


Runnable myRunnable = new Runnable(){

     public void run(){
        System.out.println("Runnable running");
     }
   }

   Thread thread = new Thread(myRunnable);
   thread.start();
ログイン後にコピー


スレッドを継承しますか、それともインターフェイスを実装しますか?

2 つの方法のうちどちらが最適であるかについてのルールはありません。どちらの方法でも機能します。ただし、私個人としては、Runnable インターフェイスを実装し、この実装のインスタンスを Thread インスタンスとして管理することを好みます。スレッド プールによって実行される Runnable 実装がある場合、プールのスレッドが空くまで Runnable インスタンスをキューに入れるのは簡単です。 Thread サブクラスを使用してこれを実現するのは少し困難です。

通常、Runnable を実装するだけでなく、サブクラス Thread も実装する必要があります。たとえば、Thread サブクラスを作成すると、複数の Runnable を実行できます。これは、スレッド プールを実装する典型的な例です。

よくある落とし穴: start() の代わりに run() を呼び出す

スレッドを作成して開始するとき、よくある間違いは、次のように、start メソッドの代わりに Thread の run メソッドを呼び出すことです。 Runnable の run メソッドも期待どおりに実行されるため、おそらく何も気付かなかったでしょう。ただし、作成した新しいスレッドによっては実行されません。作成したスレッドを置き換えたスレッドの run メソッドが実行されます。言い換えれば、上記の 2 行のコードが実行されるスレッドです。新しく作成されたスレッド インスタンスの run メソッドを呼び出すには、start メソッドを呼び出す必要があります。

スレッド名 Java スレッドを作成するときに、名前を付けることができます。この名前は、異なるスレッドを区別するのに役立ちます。たとえば、複数のスレッドがこの出力を書き込んだ場合、どのスレッドがどのテキストを書き込んだのかがわかります。以下に例を示します:

Thread newThread = new Thread(MyRunnable());
  newThread.run();  //should be start();
ログイン後にコピー

Thread コンストラクターに渡される文字チャネル引数に注目してください。この文字列はスレッドの名前です。この名前は、Thread の getName メソッドを通じて取得できます。 Runnable 実装を実行するときに、名前を渡すこともできます。次のように:

Thread thread = new Thread("New Thread") {
      public void run(){
        System.out.println("run by: " + getName());
      }
   };


   thread.start();
   System.out.println(thread.getName());
ログイン後にコピー

ただし、MyRunnable クラスは Thread クラスのサブクラスではないため、それを実行しているスレッドの getName() メソッドにアクセスできないことに注意してください。


Thread.currentThread()このメソッドは、実行されている現在のスレッドの Thread インスタンスへの参照を返します。このようにして、コードのブロックを実行しているスレッドの Thread オブジェクトにアクセスできます。以下に例を示します。

MyRunnable runnable = new MyRunnable();
   Thread thread = new Thread(runnable, "New Thread");

   thread.start();
   System.out.println(thread.getName());
ログイン後にコピー

Thread オブジェクトへの参照を取得したら、そのオブジェクトのメソッドを呼び出すことができます。たとえば、実行中のスレッドの名前を取得できます:

Thread thread = Thread.currentThread();
ログイン後にコピー


Java Thread Instance

这里有一个小的例子。首先它打印出来了正在执行的main方法的线程的名字。这个线程是被JVM分配的。然后启动了10个线程,以及给予他们所有作为名称(“”+i)的一个数字。每一个线程然后打印出名字,以及停止执行。

public class ThreadExample {

  public static void main(String[] args){
    System.out.println(Thread.currentThread().getName());
    for(int i=0; i<10; i++){
      new Thread("" + i){
        public void run(){
          System.out.println("Thread: " + getName() + " running");
        }
      }.start();
    }
  }
}
ログイン後にコピー


注意,甚至如果线程是按顺序启动的(1,2,3等等)。他们可能也不会按顺序执行的,意味着线程1可能不是第一个打印出来的名字。这个就是为什么原则上线程是并行运行而不是顺序呢执行的原因了。这个JVM以及操作系统决定着线程执行的顺序。这个顺序每次在他们启动的时候都不会相同的。
以上就是创建以及启动一个Java线程的内容,更多相关内容请关注PHP中文网(www.php.cn)!


このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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)

アプリケーション起動エラー0xc000012dの問題を解決する方法 アプリケーション起動エラー0xc000012dの問題を解決する方法 Jan 02, 2024 pm 12:53 PM

友人のコンピュータに特定のファイルが不足している場合、エラー コード 0xc000012d が表示されてアプリケーションが正常に起動できませんが、実際にはファイルを再ダウンロードしてインストールすることで解決できます。アプリケーションが正常に起動できません 0xc000012d: 1. まず、ユーザーは「.netframework」をダウンロードする必要があります。 2. 次に、ダウンロード アドレスを見つけて、コンピューターにダウンロードします。 3. 次に、デスクトップをダブルクリックして実行を開始します。 4. インストールが完了したら、間違ったプログラムの場所に戻り、プログラムを再度開きます。

コンピューターのプロンプト「再起動して適切な起動デバイスを選択してください」を解決する方法 コンピューターのプロンプト「再起動して適切な起動デバイスを選択してください」を解決する方法 Jan 15, 2024 pm 02:00 PM

システムの再インストールは確実な解決策ではないかもしれませんが、再インストール後、コンピュータの電源を入れると、黒の背景に白のテキストが表示され、次のプロンプトが表示されることがわかりました。「rebootandselectproperbootdevice、何が起こっていますか?」このようなプロンプトは通常、ブート エラーによって発生します。皆さんを助けるために、編集者が解決策を提案しました。コンピュータの使用がますます一般的になり、コンピュータの故障がますます一般的になってきています。いいえ、最近、一部のユーザーがコンピュータの電源を入れるときに黒い画面に遭遇し、再起動と適切なブート デバイスの選択を求められ、コンピュータ システムが起動できなくなりました。通常は。どうしたの?どうやって解決すればいいでしょうか?ユーザーは混乱しています。次に編集者がフォローします

Ubuntu 起動時の黒い画面の問題に対する効果的な解決策とテクニック Ubuntu 起動時の黒い画面の問題に対する効果的な解決策とテクニック Dec 29, 2023 am 10:30 AM

Ubuntu 起動時の黒い画面を解決する実践的なヒントと方法 はじめに: Ubuntu は人気のある Linux オペレーティング システムですが、起動プロセス中に黒い画面の問題が発生する場合があります。この問題は、グラフィックス カード ドライバーの問題、ソフトウェアの競合、システム エラーなど、さまざまな理由によって発生する可能性があります。この記事では、Ubuntu 起動時の黒い画面の問題を解決し、システムの安定した動作を確保するための実用的なヒントと方法を紹介します。 1. グラフィックス カード ドライバーを更新して再インストールし、リカバリ モードに入ります。起動中に Shift キーを押してリカバリ モードに入ります。

wps がこのオブジェクトのソース アプリケーションを開始できない場合はどうすればよいですか? wps がこのオブジェクトのソース アプリケーションを開始できない場合はどうすればよいですか? Mar 13, 2024 pm 09:13 PM

WPS は、ドキュメント、フォーム、PPT など、非常に広く使用されているオフィス ソフトウェアであり、複数端末の同期をサポートしています。 wps編集時に「このオブジェクトのソースアプリケーションを起動できません」というプロンプトが表示された場合、どうすれば解決できますか?この問題は、リンクまたはファイルを開こうとしているが、そのソース アプリケーションが存在しないか削除されているために発生することがあります。解決策は次のとおりです。 1. WPS ソフトウェアを再インストールします。WPSOffice を再インストールして問題を解決し、最新バージョンを使用していることを確認してください。 2. デフォルトのプログラムを手動で変更する: デフォルトのプログラムを WPS に変更してみてください。開きたいファイルを右クリックし、[プログラムから開く] を選択してください。

Realme Phoneでフォルダーを作成するにはどうすればよいですか? Realme Phoneでフォルダーを作成するにはどうすればよいですか? Mar 23, 2024 pm 02:30 PM

タイトル: Realme Phone 初心者ガイド: Realme Phone でフォルダーを作成する方法?今日の社会において、携帯電話は人々の生活に欠かせないツールとなっています。人気のスマートフォン ブランドとして、Realme Phone はそのシンプルで実用的なオペレーティング システムでユーザーに愛されています。 Realme 携帯電話を使用する過程で、多くの人が携帯電話上のファイルやアプリケーションを整理する必要がある状況に遭遇する可能性があり、フォルダーを作成するのが効果的な方法です。この記事では、ユーザーが携帯電話のコンテンツをより適切に管理できるように、Realme 携帯電話にフォルダーを作成する方法を紹介します。いいえ。

Appleデュアルシステムの起動優先順位を設定する方法 Appleデュアルシステムの起動優先順位を設定する方法 Feb 19, 2024 pm 06:49 PM

テクノロジーが発展し続けるにつれて、さまざまなオペレーティング システムを使用する必要性がますます一般的になってきています。 Apple ユーザーの場合、macOS と Windows などの 2 つの異なるオペレーティング システムを 1 つのデバイスにインストールして使用する必要がある場合があります。この場合、特に二重化システムの起動シーケンスの設定が重要です。この記事では、Apple デバイスの電源を入れたときに最初にデュアル システムが起動するように設定する方法を紹介します。まず、両方のオペレーティング システムが Apple デバイスに正常にインストールされていることを確認する必要があります。この Apple では BootCamp を使用できます

GIMPでピクセルアートを作成する方法 GIMPでピクセルアートを作成する方法 Feb 19, 2024 pm 03:24 PM

この記事は、Windows でのピクセル アート作成に GIMP を使用することに興味がある場合に役立ちます。 GIMP は、無料でオープンソースであるだけでなく、美しい画像やデザインを簡単に作成できる有名なグラフィック編集ソフトウェアです。 GIMP は、初心者にもプロのデザイナーにも同様に適していることに加えて、描画と作成のための唯一の構成要素としてピクセルを利用するデジタル アートの形式であるピクセル アートの作成にも使用できます。 GIMP でピクセル アートを作成する方法 Windows PC で GIMP を使用してピクセル アートを作成する主な手順は次のとおりです。 GIMP をダウンロードしてインストールし、アプリケーションを起動します。新しいイメージを作成します。幅と高さのサイズを変更します。鉛筆ツールを選択します。ブラシの種類をピクセルに設定します。設定

壁紙エンジンを始めるときにどれを選ぶべきですか? 壁紙エンジンを始めるときにどれを選ぶべきですか? Mar 19, 2024 am 08:49 AM

壁紙エンジンが起動するとき、4 つの異なるオプションがあります。多くのユーザーは、壁紙エンジンを起動するときにどれを選択すればよいかわかりません。通常、壁紙エンジンが起動するときは、最初の 32 ビットを選択します。壁紙エンジンを開始するときにどれを選択しますか? 回答: 32 ビットを開始します。 1. 通常、壁紙エンジンが起動するときは、最初の「32 ビットの開始」を選択します。 2. 壁紙エンジンが開始されるとき、4 つの異なるオプションがあります: 32 ビットで開始、64 ビットで開始。 3. 32 ビットを開始: これは一般的に推奨されるオプションであり、ほとんどのユーザーに適しています。 4. 64 ビットの開始: システムが 64 ビットをサポートしている場合は、このオプションを選択できます。

See all articles