この記事では、Java のスレッド化テクノロジを例を挙げて詳しく説明します。これは、Java プログラミングを深く理解するのに役立つと思います。詳細は以下のとおりです。
多くの人は Java を学習する際にスレッドについて一定の理解を持っていますが、私たちが Android 開発に取り組み始めたとき、スレッドがいかに重要であるかを実際に発見しました。参考までに、この記事では Java スレッドの使用経験を共有します。
まず最初に、スレッドとプロセスは同じものではないことを誰もが理解する必要があります。プロセスとは何ですか?このプロセスはクラス ファイルを実行する必要があるのと同じで、スレッドは実際に実行するために CPU リソースを呼び出します。通常、クラス ファイルにはプロセスが 1 つだけありますが、スレッドの実行は非同期実行メソッドであるため、多数のスレッドが存在する可能性があります。
1. main 関数で別のスレッドを開始する方法:
サンプルコードは次のとおりです。
public class Thread_one { public static void main(String [] args){ Run run = new Run(); //これはメソッド呼び出しであり、スレッド Thread thread = new とは大きく異なります。 Thread (run); thread.start();// スレッドを開始し、スレッドの run() メソッドを呼び出します for(int i=1; i<=20; i++){ System.out.println("main の値スレッド i: --------"+i); } }}class Run は Runnable{ @Override public void run() { for(int i=1; i<=20; i++){ System.out .println( "サブスレッド i の値: "+i);
2. スレッドでのスリープメソッド
サンプルコードは次のとおりです。
public class Thread_sleep { /* * スレッド一時停止 */ public static void main(String [] args){ Runone run = new Runone() thread = new Thread.start(); (5000); thread.interrupt();//スレッドの実行を中断する//thread.stop();//スレッドの中断に比べて、stop はあまりにも荒いので、このメソッドは一般的に使用されません。子スレッドを強制的に閉じる必要があります。 } catch (InterruptedException e) { e.printStackTrace() } }}class Runone は Runnable{ @Override public void run() { for(int i=1; i<10; i++) ){ try { Thread.sleep(1000 ); System.out.println("-----"+new Date()+"-----"); } catch (InterruptedException e) { return ;//子スレッドが中断されたことを検知した場合は、子スレッドを直接閉じます。} } }}
ここでの特別な注意は、thread.interrupt(); がスレッドの実行を中断できることです。これは stop よりも少し穏やかですが、スレッドを閉じる最良の方法ではありません。
public class Thread_stop { public static void main(String [] args){ Runthree run = new Runthree(); スレッド th = new Thread(run); try { Thread.sleep(5000); InterruptedException e) { e.printStackTrace(); } runthree は Runnable{ を実装します。 { System.out.println("子スレッド----"+(i++)); Thread.sleep(1000) } catch (InterruptedException e) { e.printStackTrace() } } public void setStop();フラグ = false; } }
スレッドでの結合と譲渡について簡単に紹介します。
1. スレッドをマージする方法。ここで join() メソッドが呼び出されます。
サンプルコードは次のとおりです。
public class Thread_join { /* * スレッドをマージします */ public static void main(String [] args){ Runtwo run = new Runtwo() thread = new Thread.start(); ();//スレッドをマージします。これはメソッド呼び出しと同等です。} catch (InterruptedException e) { e.printStackTrace() } for(int i=0; i<10; i++){ System.out.println("mainスレッド: "+i); } }}class Runtwo は Runnable{ @Override public void run() { for(int i=0; i<10; i++){ System.out.println("子スレッド: --- -"+i); } } }
2. スレッドを放棄する方法以下に示すように、ここで Thread の yield() メソッドが呼び出されます。
public class Thread_yield { /**CPU を放棄します * @param args */ public static void main(String[] args) { Th th = new Th("aaa"); th.start(); ; i<=10; i++){ System.out.println("メインスレッド----"+i) } }}クラス Th extends Thread{ Th(String s){super(s) ;} @Override public void run() { for(int i = 0; i<=10; i++){ if(i%3!=0){ System.out.println("子スレッド"+i); else{ System.out.println("サブスレッド i="+i+" スレッド スイッチ"); yield();//このメソッドは Thread から継承する場合にのみ使用できます} } }
最後に、スレッドの優先度の問題について説明します。コードは次のとおりです。
public class Thread_priority { /* * priority はスレッドの優先順位を設定します * Thread のデフォルトの優先順位は 5 です; Thread の最大優先順位は 10、最小値は 0 */ public static void main(String [] args){ T1 t1 = new T1(); new T2(); //t1.setPriority(Thread.NORM_PRIORITY+3); //t1 t2.start(); extends Thread { @Override public void run() { for(int i = 0; i<50; i++){ System.out.println("Thread T1-----"+i); Thread{ @Override public void run() { for(int i = 0; i<50; i++){ System.out.println("Thread T2"+i); }
上記のコードを通じて、JAVA のスレッド メカニズムを基本的に理解できたと思います。この記事の説明が Java プログラミングの詳細な学習に役立つことを願っています。