0から10.Javaマルチスレッド
3580 ワード
第1節:マルチスレッドの導入
定義:同時に複数のタスクを制御します.
第二節:Javaマルチスレッド実装
1,Threadクラスを継承する
2,Runnableインタフェースを実現する
セクション3:スレッドのステータス
1、ステータスの作成
プログラムで構築方法でスレッドオブジェクトを作成すると、新しいスレッドオブジェクトが新規状態になります.この場合、対応するメモリ領域とその他のリソースがありますが、まだ実行できません.スレッドオブジェクトを新規作成するには、「Thread thread=new Thread();」など、Threadクラスの構築方法を使用します.
2、準備状態
スレッドオブジェクトを新規作成したら、そのスレッドのstart()メソッドを呼び出すとスレッドを起動できます.スレッドが起動すると、スレッドは準備完了状態になります.このとき、スレッドはスレッドキューに入り、CPUサービスを待機します.これは、実行条件が満たされていることを示します.
3、運転状態
準備状態のスレッドが呼び出され、プロセッサリソースが取得されると、スレッドは実行状態に入ります.このとき、スレッドオブジェクトのrun()メソッドが自動的に呼び出されます.run()メソッドは,このスレッドの動作と機能を定義する.
4、渋滞状態
実行中のスレッドは、特定の場合、人によって保留されたり、時間のかかる入出力操作を実行する必要がある場合、CPUを譲り、自分の実行を一時的に中止し、渋滞状態に入る.詰まった場合、スレッドはキューキューに入ることができず、詰まった原因が解消された場合にのみ、スレッドは準備完了状態に移行できます.
5、死亡状態
スレッドがstop()メソッドを呼び出すとrun()メソッドの実行が終了すると、死亡状態になります.デッドステートのスレッドは、実行を継続する能力を持っていません.
セクション4:スレッドの一般的な方法
1,getName(); スレッドの名前を返します.
2,currentThread();現在実行中のスレッドオブジェクトへの参照を返します.
3,isAlive();スレッドがアクティブかどうかをテストします.
4,sleep();スレッドがスリープしています.
5,setPriority(int newPriority);スレッドの優先度を変更します.
6,yield();現在実行中のスレッドオブジェクトを一時停止し、他のスレッドを実行します.
定義:同時に複数のタスクを制御します.
public class Demo1 {
/**
*
*/
private static void music(){
for(int i=0;i<1000;i++){
System.out.println(" ");
}
}
/**
*
*/
private static void eat(){
for(int i=0;i<1000;i++){
System.out.println(" ");
}
}
public static void main(String[] args) {
/*music();
eat();*/
/**
*
*/
Music musicThread=new Music();
Eat eatThread=new Eat();
musicThread.start();
eatThread.start();
}
}
public class Eat extends Thread{
@Override
public void run() {
for(int i=0;i<1000;i++){
try {
Thread.sleep(100);
System.out.println(" ");
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public class Music extends Thread{
@Override
public void run() {
for(int i=0;i<1000;i++){
try {
Thread.sleep(100);
System.out.println(" ");
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
第二節:Javaマルチスレッド実装
1,Threadクラスを継承する
public class Thread1 extends Thread{
private int baoZi=1;
private String threadName;
public Thread1(String threadName) {
super();
this.threadName = threadName;
}
@Override
public void run() {
while(baoZi<=10){
System.out.println(threadName+" "+baoZi+" ");
baoZi++;
}
}
public static void main(String[] args) {
System.out.println(" , , 10 ");
Thread1 t1=new Thread1(" ");
Thread1 t2=new Thread1(" ");
t1.start();
t2.start();
}
}
2,Runnableインタフェースを実現する
public class Thread2 implements Runnable{
private int baoZi=1;
private String threadName;
public Thread2(String threadName) {
super();
this.threadName = threadName;
}
@Override
public synchronized void run() {
while(baoZi<=10){
System.out.println(threadName+" "+baoZi+" ");
baoZi++;
}
}
public static void main(String[] args) {
/*System.out.println(" , , 10 ");
Thread2 t1=new Thread2(" ");
Thread2 t2=new Thread2(" ");
Thread t11=new Thread(t1);
Thread t12=new Thread(t2);
t11.start();
t12.start();*/
Thread2 t1=new Thread2(" ");
Thread t11=new Thread(t1);
Thread t12=new Thread(t1);
Thread t13=new Thread(t1);
//
t11.start();
t12.start();
t13.start();
}
}
セクション3:スレッドのステータス
1、ステータスの作成
プログラムで構築方法でスレッドオブジェクトを作成すると、新しいスレッドオブジェクトが新規状態になります.この場合、対応するメモリ領域とその他のリソースがありますが、まだ実行できません.スレッドオブジェクトを新規作成するには、「Thread thread=new Thread();」など、Threadクラスの構築方法を使用します.
2、準備状態
スレッドオブジェクトを新規作成したら、そのスレッドのstart()メソッドを呼び出すとスレッドを起動できます.スレッドが起動すると、スレッドは準備完了状態になります.このとき、スレッドはスレッドキューに入り、CPUサービスを待機します.これは、実行条件が満たされていることを示します.
3、運転状態
準備状態のスレッドが呼び出され、プロセッサリソースが取得されると、スレッドは実行状態に入ります.このとき、スレッドオブジェクトのrun()メソッドが自動的に呼び出されます.run()メソッドは,このスレッドの動作と機能を定義する.
4、渋滞状態
実行中のスレッドは、特定の場合、人によって保留されたり、時間のかかる入出力操作を実行する必要がある場合、CPUを譲り、自分の実行を一時的に中止し、渋滞状態に入る.詰まった場合、スレッドはキューキューに入ることができず、詰まった原因が解消された場合にのみ、スレッドは準備完了状態に移行できます.
5、死亡状態
スレッドがstop()メソッドを呼び出すとrun()メソッドの実行が終了すると、死亡状態になります.デッドステートのスレッドは、実行を継続する能力を持っていません.
セクション4:スレッドの一般的な方法
1,getName(); スレッドの名前を返します.
2,currentThread();現在実行中のスレッドオブジェクトへの参照を返します.
3,isAlive();スレッドがアクティブかどうかをテストします.
4,sleep();スレッドがスリープしています.
5,setPriority(int newPriority);スレッドの優先度を変更します.
6,yield();現在実行中のスレッドオブジェクトを一時停止し、他のスレッドを実行します.