public class Test01 {
public static void main(String[] args) {
Thread t = new Thread();
State s = t.getState();
System.out.println(s);
}
}
2.RUNNABLE(可运行状态):线程正在执行代码,就处于该状态
Runnable r = new Runnable(){
@Override
public void run(){
for(;;);
}
};
Thread t = new Thread(r);
t.start();
Thread.sleep(100);//保证线程已经启动,并开始执行run方法中的代码
State s = t.getState();
System.out.println(s);
3.BLOCKED(阻塞状态):一个线程获取synchronized锁对象失败,就处于该状态
Runnable r = new Runnable(){
@Override
public void run(){
synchronized(this){
for(;;);
}
}
};
Thread t1 = new Thread(r);
Thread t2 = new Thread(r);
t1.start();
t2.start();
Thread.sleep(100);//保证两个线程都已经启动,并开始执行run方法
System.out.println(t1.getState());
System.out.println(t2.getState());
Lock lock = new ReentrantLock();
Runnable r = new Runnable(){
@Override
public void run(){
//上锁
lock.lock();
for(;;);
//lock.unlock();
}
};
Thread t1 = new Thread(r);
Thread t2 = new Thread(r);
t1.start();
t2.start();
Thread.sleep(100);//保证两个线程都已经启动,并开始执行run方法
System.out.println(t1.getState());
System.out.println(t2.getState());
Runnable r = new Runnable() {
@Override
public void run() {
method();
}
};
Thread t1 = new Thread(r);
Thread t2 = new Thread(r);
t1.start();
t2.start();
Thread.sleep(100);//保证两个线程都已经启动,并开始执行run方法
System.out.println(t1.getState());
System.out.println(t2.getState());
}
public static synchronized void method() {
//String str = "";
//获取当前类的反射对象
Class c = Test07.class;
try {
c.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
5.TIMED_WAITING(计时等待状态):线程正在执行sleep方法,就处于该状态
Runnable r = new Runnable(){
@Override
public void run(){
try{
Thread.sleep(5000);
}catch(InterruptedException e){
e.printStackTrace();
}
}
};
Thread t = new Thread(r);
t.start();
Thread.sleep(100);//保证线程已经启动,并开始执行run方法中的代码
System.out.println(t.getState();
6.TERMINATED(消亡状态):线程把任务执行完毕后,就处于该状态
Runnable r = new Runnable() {
@Override
public void run() {
method();
}
};
Thread t1 = new Thread(r);
Thread t2 = new Thread(r);
t1.start();
t2.start();
Thread.sleep(100);//保证两个线程都已经启动,并开始执行run方法
System.out.println(t1.getState());
System.out.println(t2.getState());