-
线程的生命周期 创建 -> 就绪 -> 运行 -> (阻塞->解除阻塞->就绪->运行) ->消亡 创建状态:新建了一个线程对象,如Thread t = new Thread(); 就绪状态:调用线程的start()方法启动线程后,线程就进入了就绪状态,此时线程只是进入了线程队列,等待获取cpu资源,具备了运行的条件,但并不一定已经开始运行了,因为当前cpu可能在执行别的线程. 运行状态:当线程获取了cpu资源时就进入了运行状态,执行线程的run方法. 消亡:一旦线程的run方法执行完毕后线程将会消亡. 阻塞状态:当线程在运行状态时,可能会遇到一些阻塞事件,此时当前线程会让出cpu资源,暂停了自己的执行,并且进入阻塞状态. 当阻塞解除时便会重新进入就绪状态,继续进入线程队列等待获取cpu资源.当重新获取了cpu资源后,会从上次已执行的run方法代码后继续执行. 阻塞事件:线程的sleep()方法、线程的join()方法等. 大多数情况下,线程是因为执行完run方法就会进入终止状态,除非人为调用了stop方法.查看全部
-
守护线程当所有线程终止时一定会终止。查看全部
-
就绪状态其实就是等待CPU调度资源。查看全部
-
两种方式的比较 Runnable方式可以避免Thread方式由于Java单继承特性带来的缺陷. Runnable的代码可以被多个线程(Thread实例)共享,适合于多个线程处理同一资源的情况. 线程的执行过程也是随机的,当线程一抢占了cpu资源,在执行run方法的某句代码时可能会被线程二所抢占cpu资源,因此线程一将会等待重新获取cpu资源,因此程序可能会出现数据混乱的现象. 线程对cpu资源的抢占也是随机的.查看全部
-
线程创建的两种方式查看全部
-
两种方式对比查看全部
-
对比图查看全部
-
实现Runnable接口查看全部
-
继承Thread类查看全部
-
jstack和jvm本身的工具查看线程快照查看全部
-
jstack生成线程快照查看全部
-
thread.currentthread.getname 获取该线程的名字 sleep 和wait的区别是什么查看全部
-
线程。需要用到jstack工具查看全部
-
用户线程 守护线程 如何创建守护线程。 thread.setdaemon(true) 用户线程消亡。守护线程也跟着消失查看全部
-
线程。要么继承thread 要么实现runnable接口 几个线程同时工作时 系统会分配给她们时间片 在执行run方法的时候 如果时间片结束 就会跳出该结果 当该线程再次被份分配到时间片后。会从断掉的地方继续执行查看全部
举报
0/150
提交
取消