Javaスレッドの詳細な説明とスレッドとプロセスの違い
1。プロセスとスレッド
各プロセスには一意のメモリスペースがあり、アプリケーションは複数のプロセスを同時に開始できます。たとえば、IEブラウザでは、IEブラウザを開くことはプロセスの開始と同等です。
スレッドとは、プロセスの実行プロセスを指し、プロセスには複数のスレッドを含めることができます。
各プロセスには、独立したメモリスペースを割り当てるためのオペレーティングシステムが必要であり、同じプロセスの複数のスレッド、つまり共有メモリやその他のリソースを共有する必要があります。
Java.exeが呼び出されるたびに、オペレーティングシステムはJava仮想マシンプロセスを開始します。 Java仮想マシンプロセスが開始されると、Java仮想マシンはメインスレッドを作成し、プログラムの入り口メインメソッドから実行を開始します。
Java仮想マシンがスレッドを起動するたびに、スレッドメソッドスタックをスレッドに割り当てて、関連情報(ローカル変数などなど)を保存し、スレッドがこのスタックで実行されます。したがって、Javaオブジェクトのローカル変数はスレッドセーフですが、インスタンス変数とクラス変数はスタックに保存されていないため、スレッドセーフではありません。
プロセスには、準備、実行、ブロッキングの3つの状態があります。
2。スレッド作成方法
実行可能な方法:(この方法は柔軟で、推奨されます)
public class thread02はrunnable {public static void main(string [] args){runnable r = new <strong> thread02 </strong>();スレッドT1 =新しいスレッド(<strong> r </strong>、 "t1"); /***スレッドソースコード*パブリックスレッド(実行可能ターゲット、文字列名){init(null、ターゲット、名前、0); } */ thread t2 = newスレッド(r、 "T2"); t1.start(); // cpu t2.start()を待っている状態で、スレッドt1を起動します。 // cpu t1.run()を待機している状態でスレッドt2を開始します。 //メインスレッドメインは、オブジェクトの実行方法を呼び出しますt1} public void run(){system.out.println( "スレッドの名前は" + thread.currentthread()。getName()); }}操作の結果は次のとおりです。
スレッドの名前はt1threadの名前ですmainthreadの名前はt2です
ヘッドウェイ
public class thread03拡張スレッド{public static void main(string [] args){thread03 t1 = new <strong> thread03 </strong>(); //スレッドt1 = newスレッド()として書き込む注:Thread03は、この時点でt1.start(); } public void run(){system.out.println( "スレッドの名前は" + thread.currentthread()。getName()); }}実行結果:スレッドの名前はスレッド0です
注:カスタマイズされたスレッドに加えて、プログラムが実行されるたびにメインスレッドもあります。
包括的な:
public class thread01 {public static void main(string [] args){thread thread = new Thread(); thread.start(); //実際に動作するものはrun()/**で実行され、thread* public void run(){if(target!= null){target.run(); }}自分で作成したスレッドでは、実行方法を書き換えてコンテンツを実行するように実行する必要がある必要があります。したがって、インターフェイスまたは継承を実装してからサブクラスを生成する必要があります*//スレッド1スレッドサブクラスメソッドを作成する方法(継承)スレッド1 = newスレッド(){public void(){true() (中断exception e){e.printstacktrace(); } //thread.currentthread()現在のスレッドSystem.out.println( "スレッド1の名前が"+thread.currentThread()。getName()); }}}}; // thread1.start(); //スレッドを作成せずに起動することができない//スレッド2の実行可能方法の作成方法"+thread.currentThread()。getName());}}}); // thread2.start(); //スレッドを実行new runnable(){public void run(){system.out.println( "runnable"+thread.currentthread()。getName();}){public void run(){//サブクラスの実行方法は、run classの実行方法を無効にします。 "+thread.currentThread()。getName()); } }。始める(); } /****単一のCPUでのマルチスレッドの実行は、異なる場所で同じことをしている1人の人を改善するのではなく、実行効率を低下させる可能性が非常に高くなります* /}読んでくれてありがとう、私はそれがあなたを助けることができることを願っています。このサイトへのご支援ありがとうございます!