目录
Java 线程的状态、生命周期、优先级
线程的状态
1.新建状态
2.可运行状态
调用start并不知直接运行线程,而是进入可运行状态
3.正在运行状态
4.阻塞状态
5.终止状态
线程的生命周期:
线程的生命周期是指线程从创建到启动直至运行结束的这段时间,即以上五个状态的转换过程。
使自己进入阻塞状态:sleep方法的使用
sleep即休眠使程进入暂停状态,释放cpu的使用权,等sleep时间到重新获取cpu的使用权
以上原源码
class MyThread implements Runnable{
@Override
public void run() {
for(int i=1;i<=30;i++){
System.out.println(Thread.currentThread().getName()+"执行第"+i+"次!");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
public class SleepDemo {
public static void main(String[] args) {
MyThread mt=new MyThread();
Thread t=new Thread(mt);
t.start();
Thread t1=new Thread(mt);
t1.start();
}
}
抢占资源:join方法
使其他线程进入阻塞状态:join方法的使用
如果线程A调用了join方法,线程A就会优先执行,只有等待线程A执行完后,其他线程才可以执行,所有说join()是一种抢占资源的方式。
以上源码
class MyThread extends Thread{
public void run(){
for(int i=1;i<=500;i++)
System.out.println(getName()+"正在执行"+i+"次!");
}
}
public class JoinDemo {
public static void main(String[] args) {
MyThread mt=new MyThread();
mt.start();
try {
mt.join(1);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
for(int i=1;i<=20;i++){
System.out.println("主线程运行第"+i+"次!");
}
System.out.println("主线程运行结束!");
}
}
线程优先级
数字越大优先级越高,但在Java中,受到多种因素影响,优先级高的线程不一定会先执行。
设置、获取线程优先级