摘要:
信号量semaphore 允许多个线程同时访问 读写锁ReadWriteLock 在频繁的读写耗时中,读之间不阻塞 倒计时器CountDownLatch obj = new CountDownLatch(10) 设置预“任务”10次,obj.CountDown();次数减一 obj.await()等 阅读全文
摘要:
基于AQS的锁(比如ReentrantLock)原理大体是这样:有一个state变量,初始值为0,假设当前线程为A,每当A获取一次锁,status++. 释放一次,status--.锁会记录当前持有的线程。当A线程拥有锁的时候,status>0. B线程尝试获取锁的时候会对这个status有一个CA 阅读全文
摘要:
Integer.valueOf()方法基于减少对象创建次数和节省内存的考虑,缓存了[-128,127]之间的数字。此数字范围内传参则直接返回缓存中的对象。在此之外,直接new出来。 在java中,Integer属于不可变对象,也就是对象一旦创建,就不可以修改,如果你的Integer代表1,那么它就永 阅读全文
摘要:
将线程转换为守护线程可以通过调用Thread对象的setDaemon(true)方法来实现。在使用守护线程时需要注意一下几点: (1) thread.setDaemon(true)必须在thread.start()之前设置,否则会跑出一个IllegalThreadStateException异常。你 阅读全文
摘要:
notify 和 wait,他们的操作必须有一个公共的锁对象(就相当于下拉框option 的分组一样) notify通知之后,也要等到当前线程运行完成,才会释放锁,wait线程才能开始拿到锁,执行(wait()方法之后的)程序 Object.wait() Object.nitify() Thread 阅读全文
摘要:
如题:Thread.stop()不要随意调用 ,因为这样会强制中断线程,如果当时线程存数据未终结的时候,stop,会出现脏数据的情况, 如果想要中断,请用变量的形式进行判断 还可以用中断符号表示: public static boolean Thread.interrupted() //判断是否被中 阅读全文