Java中创建线程的三种实现方式
//方式一 run()
Thread t1 = new Thread() {
@Override
public void run() {
log.debug("run");
}
};
t1.start();
//方式二 Runnable
Thread t2 = new Thread(new Runnable() {
@Override
public void run() {
log.debug("runnable");
}
});
t2.start();
//方式三 FutureTask Callable
FutureTask<Integer> callable = new FutureTask<>(new Callable<Integer>() {
@Override
public Integer call() throws Exception {
log.debug("callable");
return 100;
}
});
callable.run();
Integer returnNum = callable.get();
log.debug("returnNum:{}", returnNum);
1.首先新建一个线程状态。(此时的线程没有被Cpu所执行,线程刚出生)
2.运行线程状态,如果Cpu繁忙 那么线程进入阻塞状态 ,等待Cpu来运行该线程状态。(此时的线程没有被Cpu所执行,Cpu没有理你)
3.如果线程能够运行, 遇到线程休眠状态的操作 ,那么线程进入休眠状态 ,线程休眠的时间到了以后会自动开始运行状态 ,则返回到2的起点。
4.线程等待状态 , 线程遇到等待状态的操作 ,那么线程进入等待状态 ,线程被唤醒操作执行, 线程则进入起点2状态
5.线程成功运行 ,Cpu不繁忙可以直接运行线程
6.线程运行结束,线程挂掉。
该图引用教材上的原图
**博主第一次发文章 ,目的就是为了学习中自己发表一下自己对所学知识的一知半解。 如果各位有自己的不同看法和理解, 可以回复评论, 希望能与各位探讨。