线程的几种状态
1.新生(通过new关键字创建一个线程)
2.就绪(通过start关键字让线程进入就绪状态)
3.运行(通过cpu的调用进入运行状态)
4.阻塞(线程运行过程中遇到sleep(睡眠),yield(让步),wait(等待)会进入阻塞状态)
5.死亡(当run方法运行结束线程会自动死亡)
package com.test;
public class ThreadDemo extends Thread{
//继承Thread类重写run方法
@Override
public void run() {
for(int i=1;i<=10;i++){
System.out.println(i);
}
}
public static void main(String[] args) {
ThreadDemo t=new ThreadDemo();
//通过start关键字进入就绪状态
t.start();
}
}
sleep(睡眠)方法的使用
sleep睡眠时间到了后会自动重新进入就绪状态准备cpu调用
package com.test;
public class ThreadDemo extends Thread{
//继承Thread类重写run方法
@Override
public void run() {
//线程1
for(int i=1;i<=10;i++){
//如果i%2等于0就让线程睡1秒
if(i%2==0){
try {
sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("线程1: "+i);
}
}
public static void main(String[] args) {
ThreadDemo t=new ThreadDemo();
//通过start关键字进入就绪状态
t.start();
//线程2
for(int i=1;i<=10;i++){
System.out.println("线程2: "+i);
}
}
}
yield(让步,暂停一次)
package com.test;
public class ThreadDemo extends Thread{
//继承Thread类重写run方法
@Override
public void run() {
//线程1
for(int i=1;i<=100;i++){
//如果i等于5就让插队
if(i==10){
yield();
}
System.out.println("线程1: "+i);
}
}
public static void main(String[] args) {
ThreadDemo t=new ThreadDemo();
//通过start关键字进入就绪状态
t.start();
//线程2
for(int i=1;i<=100;i++){
System.out.println("线程2: "+i);
}
}
}