Javaマルチスレッド(2)-マルチスレッドの一般的な方法

マルチスレッドの一般的な方法

1.スレッド名を取得して設定します

  • Threadクラスでは、getName()メソッドを使用してスレッドの名前を取得し、setName()メソッドを使用してスレッドの名前を設定できます。
  • スレッドの名前は通常、スレッドが開始される前に設定されますが、すでに実行されているスレッドの名前を設定することもできます。2つのThreadオブジェクトの実行は同じ名前ですが、わかりやすくするために、これは可能な限り回避する必要があります。
  • さらに、プログラムがスレッドの名前を指定しない場合、システムは自動的にスレッドに名前を割り当てます。
T t1=new T();
t1.setName("线程A");

スレッドを取得する:

Thread.currentThread().getName()

Thread.currenThread()メソッドがあります。このメソッドは、この
キーワードの関数と同等の現在のスレッドを取得するためのものです

ここで、スレッドの名前を設定すると、スレッドは設定した名前になりますが、名前を設定しないと、スレッドは自動的にスレッド名を作成し、Thread-0で始まります。

  1. メインスレッド
class R implements Runnable{
	public void run() {
		for(int i=0;i<3;i++) {
			System.out.println(Thread.currentThread().getName()+i);}}}
public class Demo02 {
public static void main(String[] args) {
	R r=new R();
	new Thread(r,"thread-A").start();
	r.run();}}

演算結果:
画像

ここでは、スレッドオブジェクトを介してrun()メソッドを直接呼び出すため、出力結果には、r.run()によって実行されるメインスレッドが含まれます。このステートメントの呼び出しはmainメソッドによって完了するため、つまり、実際には、mainメソッド自体もスレッド(メインスレッド)です。

質問:mainメソッドはスレッドの形式で表示されるため、Javaランタイム中にいくつのスレッドが開始されますか?

少なくとも2つ開始します。1つはメインスレッドで、もう1つはGCスレッドです。

  1. スレッドが開始されているかどうかを確認します
thread.isAlive()
  1. スレッドの強制実行

オペレーティングシステムでは、join()メソッドを使用して、スレッドを強制的に実行できます。スレッドの強制実行中は、他のスレッドを実行できず、続行する前に2番目のスレッドの完了を待機する必要があります。

join()メソッド

  1. スレッドスリープ

スレッドスリープはスレッドの実行を一時停止させる可能性があります

プログラム内でスレッドを一時的にスリープさせるには、Thread.sleep()メソッドを直接使用します。

  1. スレッドの中断

スレッドが実行されているとき、別のスレッドは、interrupt()メソッドを介してその実行状態を直接中断できます。

  1. スレッドの優先度

Javaのスレッド操作では、すべてのスレッドが実行前に準備完了状態のままになります。このとき、そのスレッドの優先度が高いと、そのスレッドが最初に実行される可能性があります。

メソッドスレッド名を設定します。setPrionity(優先度)

画像
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/qq_44762290/article/details/112379382