摘要:
jdk api中的描述:NEW至今尚未启动的线程处于这种状态。RUNNABLE正在 Java 虚拟机中执行的线程处于这种状态。可运行线程的线程状态。处于可运行状态的某一线程正在 Java 虚拟机中运行,但它可能正在等待操作系统中的其他资源,比如处理器。BLOCKED受阻塞并等待某个监视器锁的线程处于这种状态。受阻塞并且正在等待监视器锁的某一线程的线程状态。处于受阻塞状态的某一线程正在等待监视器锁,以便进入一个同步的块/方法,或者在调用 Object.wait 之后再次进入同步的块/方法。WAITING无限期地等待另一个线程来执行某一特定操作的线程处于这种状态。某一等待线程的线程状态。某一线程因 阅读全文
摘要:
设置一个读计数器,每次读取配置信息前,将计数器加1,读完后将计数器减1。只有在读计数器为0时,才能更新数据,同时要阻塞所有读属性的调用。 1 public class GlobalConfig { 2 private static GlobalConfig instance; 3 private Vector properties = null; 4 private boolean isUpdating = false; 5 private int readCount = 0; 6 private GlobalConfig() { 7 /... 阅读全文
摘要:
java多线程单例模式:1 public static Singleton getInstance(){ 2 if (instance == null) 3 synchronized(instance){ 4 if(instance == null) 5 instance = new Singleton(); 6 } 7 return instance; 8 }另一个改进: 1 public class Singleto... 阅读全文
摘要:
1 package rainbow.thread; 2 3 public class PrintABC { 4 5 private int counta = 0, countb = 0, countc = 0; 6 7 private boolean printa = false, printb = false, printc = false; 8 9 private int printcount = 0;10 11 public void printa(){12 synchronized(this){1... 阅读全文
摘要:
1。这异常就是因为一个线程压根就没拥有这个对象,却试图去等待他的监控器。比如你有很多线程都来访问一段代码块,代码块中有个xxx.wait(),一次只可能有一个线程拥有对象的监视器,你如何才能拿到这个监视器呢?通过执行此对象的同步实例方法。通过执行在此对象上进行同步的 synchronized语句的正文。对于 Class 类型的对象,可以通过执行该类的同步静态方法。如果你没有用synchronized(xxx)来包含这块代码,那么很多的线程都可以来跑这个xxx.wait(),此时就会出现问题。解决方法synchronized(object){ object.wait();} 必须先拿到这个对象2 阅读全文