易截截图软件、单文件、免安装、纯绿色、仅160KB

JAVA线程之六:线程的生命周期及死锁

一,线程的四个主要周期状态是“创建”,“可执行”,“非可执行”,“消亡”,状态转换关系如下图:
(1)创建。当实例化一个thread对象并执行start()方法后,线程进入“可执行”状态开始执行。虽然多线程给用户一种同时执行的假象,但事实上在同一时间点内,只有一个线程在执行,只是线程之间切换的动作非常快,所以看起来跟同时执行一样。
(2)可执行。当线程启用start()方法之后,进入“可执行”状态,执行用户覆写的run方法。当一个线程进入“可执行”状态下,并不代表它可以一直执行到run()结束。因为事实上它只是加入此应用程序执行安排的队列中,正在等待分享CPU资源,也就是等候执行权,在何时给予线程执行权,则由JAVA虚拟机决定,同时也由线程的优先级决定。
(3)非可执行。在“可执行”状态下,线程可能执行完毕;也可能没有执行完毕,处于等待执行权的队列中,此时线程进入“非可执行”状态。可以使用thread类中的wait(),sleep()方法使线程进入“非可执行”状态。
      当线程进入“非可执行”态,CPU就不分配时间片给这个线程。若希望线程回到“可执行”状态下,可以使用notify()方法、notifyAll()方法以及interrupt()方法。
(4)消亡。当run方法执行完毕后,线程自动消亡,也就是run()执行完毕后,该thread会自动终止。
二,关于多线程产生死锁
      因为线程可以阻塞,并且有同步控制机制可以防止其他线程在锁还没有释放的情况下访问这个对象,这时就产生了矛盾。比如:线程A在等待线程B,线程B又在等待线程A。这样就造成了死锁。
      造成死锁必须同时满足的4个条件:
(1)互斥条件。线程使用的资源必须至少有一个是不能共享的。
(2)请求与保持条件。至少有一个线程必须持有一个资源并且正在等待获取一个当前被其他线程持有的资源。
(3)非剥夺条件。分配的资源不能从相应的线程中被强制剥夺。
(4)循环等待。第一个线程等待其他线程,后者又在等待第一个线程。
     这四个条件同时满足时,才会导致死锁。所以要防止死锁的话,只需呀破坏其中一个条件即可。


相关文档:

Java设计模式之:Iterator链表模式

先来了解一下链表模式的原理:
首先写一个JavaBean,内容是要添加的元素和该元素的节点。
public class NodeBean implements Serializable
{
   
    private Object data; //元素本身
    private NodeBean next; //下一个节点
   
  &n ......

java基础面试题总结

1.局部变量在使用的时候必须已经被初始化
2.byte b=2,e=3
   byte c=b+c;   会编译不通过,应为b+c会自动 类型提升位int 如果想得到 byte c 必须强制转型        byte c=(byte)b+c;         
3.f ......

【java算法】买苹果

题目:有600个苹果,要求分装在10个盒子中。对于顾客要求的任意苹果数都可以通过此10个盒子进行组合得到。
分析:1、首先要设计10个盒子所装苹果的数目。由二进制与十进制的转换可知,2的倍数相加可以的到一切十进制数。所以如果想使用有限的数字组合得到一定范围内的所有数字必是以2的倍数进行设计的。所以,可知十个盒子 ......

什么是Java?

  Java是由SUN Microsystem公司开发的、由C++发展而来的一种面向对象的通用程
序设计语言。Java并不是专门为Internet而开发的,但它的出现的确为Internet和WWW
开辟了一个崭新的时代。它具有以下一些特点;简单、面向对象、分布式、强壮、安全、
与操作平台无关、高性能、多线程以及动态性。 ......

java计算两日期间隔天数

package com.color.program;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class CompareTime {
public static void main(String[] args){
String t1 = "2008-05-09";
String t2 = "20 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号