线程:线程的状态
?狀態NEW, RUNNABLE, TERMINATED
? ? new: 線程實例化后,還從未執行start()方法時的狀態。
? ? ?runnable: 線程進入運行的狀態。
? ? ?terminated: 線程被銷毀時的狀態。
public class MyThread extends Thread{public MyThread(){System.out.println("構造方法中的狀態:" + Thread.currentThread().getState());}@Overridepublic void run(){System.out.println("run方法中的狀態:" + Thread.currentThread().getState());} }public class Run {public static void main(String[] args){try {MyThread t = new MyThread();System.out.println("main方法中的狀態1:"+t.getState());Thread.sleep(1000);t.start();Thread.sleep(1000);System.out.println("main方法中的狀態2:"+t.getState());} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}} }TIMED_WAITING
? 線程TIMED_WAITING代表線程執行了Thread.sleep()方法,呈等待狀態,等待時間到達,繼續向下運行。
??
public class MyThread extends Thread{@Overridepublic void run(){try {System.out.println("begin sleep");Thread.sleep(10000);System.out.println(" end sleep");} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}} }public class Run {public static void main(String[] args){try {MyThread t = new MyThread();t.start();Thread.sleep(1000);System.out.println("main方法中的狀態:"+t.getState());} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}} }BLOCKED狀態
??BLOCKED狀態出現在某一個線程在等待鎖的時候。
public class MyService {synchronized static public void serviceMethod(){try {System.out.println(Thread.currentThread().getName()+" 進入了業務方法 "+Thread.currentThread().getState());Thread.sleep(10000);} catch (InterruptedException e) {e.printStackTrace();}} }public class MyThread1 extends Thread{@Overridepublic void run(){MyService.serviceMethod();} }public class MyThread2 extends Thread{@Overridepublic void run(){MyService.serviceMethod();} }public class Run {public static void main(String[] args){try {MyThread1 t1 = new MyThread1();MyThread2 t2 = new MyThread2();t1.setName("A");t2.setName("B");t1.start();t2.start();Thread.sleep(1000);System.out.println("main方法中的t1狀態:"+t1.getState());System.out.println("main方法中的t2狀態:"+t2.getState());} catch (Exception e) {e.printStackTrace();}} }?
?WAITING狀態
? 狀態waiting是線程執行了Object.wait()方法后所處的狀態
public class MyService {private Object object = new Object();public void print(){synchronized(object){try {System.out.println(Thread.currentThread().getName()+"線程");object.wait();} catch (InterruptedException e) {e.printStackTrace();}}} }public class Run {public static void main(String[] args) throws InterruptedException{final MyService m = new MyService();Runnable runnable = new Runnable(){@Overridepublic void run() {m.print();}};Thread t = new Thread(runnable,"A");t.start();Thread.sleep(1000);System.out.println(t.getState());} }?
總結
- 上一篇: 线程:Timer定时器
- 下一篇: netty:IO模型