随笔分类 - JAVA
摘要:源码如下对比synchronized,synchronized使用时会显示的指定一个对象(方法为调用对象,代码块会需要对象作为参数),来获取一个对象的独占锁而ReentrantLock可能就是使用的ReentrantLock对象的独占锁来实现锁的功能,所以不同线程要用同一个ReentrantLock...
阅读全文
摘要:如下所示,interrupted()会改变线程的中断状态(清除),而isInterrupted()不影响线程的中断状态 1 /** * Tests whether the current thread has been interrupted. The * interrupted statu...
阅读全文
摘要:在 Java中,所有对象都能够被作为"监视器monitor"——指一个拥有一个独占锁,一个入口队列和一个等待队列的实体entity。 所有对象的非同步 方法都能够在任意时刻被任意线程调用,此时不需要考虑加锁的问题。 而对于对象的同步方法来说,在任意时刻有且仅有一个拥有该对象独占锁的线程能够调...
阅读全文
摘要:1.首先要明白一个概念 JAVA中主内存和线程工作内存的概念。 如果有一个static的变量,值会存储在主内存。如果多个线程访问这个变量,每个线程都会将变量的值拷贝到自己的工作内存,之后的操作就是针对自己工作内存里副本的操作,最后再写回主内存 明显,上面的操作非原子操作,会出现经典的多线程问题: ...
阅读全文

浙公网安备 33010602011771号