发表于: 2018-01-01 19:05:18

1 514


今日完成:

看了下多线程,今天身体不舒服就没搞什么东西。


明日计划:

看前端有什么问题需要改的,再看看怎么性能优化,主要是因为返回的数据量大,比如一个搜索接口就要返回十个对象,每个对象的字节数都挺多的了。


成果:

多线程的状态:

1. 新建( new ):新创建了一个线程对象。

2. 可运行( runnable ):线程对象创建后,其他线程(比如 main 线程)调用了该对象 的 start()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获 取 cpu 的使用权 。

3. 运行( running ):可运行状态( runnable )的线程获得了 cpu 时间片( timeslice ) ,执行程序代码。

4. 阻塞( block ):阻塞状态是指线程因为某种原因放弃了 cpu 使用权,也即让出了 cpu timeslice ,暂时停止运行。直到线程进入可运行( runnable )状态,才有 机会再次获得 cpu timeslice 转到运行( running )状态。阻塞的情况分三种:

(一). 等待阻塞:运行( running )的线程执行 o . wait ()方法, JVM 会把该线程放 入等待队列( waitting queue )中。

(二). 同步阻塞:运行( running )的线程在获取对象的同步锁时,若该同步锁 被别的线程占用,则 JVM 会把该线程放入锁池( lock pool )中。

(三). 其他阻塞: 运行( running )的线程执行 Thread . sleep ( long ms )或 t . join ()方法,或者发出了 I / O 请求时, JVM 会把该线程置为阻塞状态。 当 sleep ()状态超时、join ()等待线程终止或者超时、或者 I / O 处理完毕时,线程重新转入可运行( runnable )状态。

5. 死亡( dead ):线程 run ()、 main () 方法执行结束,或者因异常退出了 run ()方法,则该线程结束生命周期。死亡的线程不可再次复生。

举例:早上打车去上班

新建(准备叫一辆嘀嘀打车)

可运行(找到一辆可以带你去上班的车)

运行(司机接到你,带你去上班)

阻塞(路上堵车了)

死亡(到公司了,付钱下车)


sleep() 和 wait() 的区别 

sleep 指线程被调用时,占着 CPU 不工作,形象地说明为“占着 CPU 睡觉”,此时,系统的CPU 部分资源被占用,其他线程无法进入,会增加时间限制。wait 指线程处于进入等待状态,形象地说明为“等待使用 CPU”,此时线程不占用任何资源,不增加时间限制。


进度:

接口调试阶段,等前端发现问题。


禅道:

http://task.ptteng.com/zentao/my-task.html



返回列表 返回列表
评论

    分享到