一、http://wangym.iteye.com/blog/1265973
这篇文章介绍了:1.java的synchronize同步【静态】方法的监视器对象是类本身,非静态方法的监视器是对象。2.同一个监视器一段时间只允许一个线程运行它的代码。
二、http://blog.youkuaiyun.com/jingzi123456789/article/details/69951057
这篇文章介绍了:阻塞(wait/notify/notifyAll)方法只能在同步块或同步方法中被调用,因为如果一个方法不需要同步,那就不需要不同线程的协作。
三、https://www.cnblogs.com/hapjin/p/5450779.html
这篇文章介绍了中断(interrupt)线程:
1.interrupt由当前线程中断其他线程otherThread.interrupt(),让其他线程由阻塞状态变为中断状态。其他线程的响应代码如下:
public class MyThread extends Thread {
@Override
public void run() {
super.run();
for (int i = 0; i < 500000; i++) {
if (this.interrupted()) { //注意条件
System.out.println("should be stopped and exit");
break;
}
System.out.println("i=" + (i + 1));
}
System.out.println("this line is also executed. thread does not stopped");//尽管线程被中断,但并没有结束运行。这行代码还是会被执行
}
}
2.杀死(stop)线程容易导致不一致性
3.可以抛出interruptException以中断线程并且在catch块中处理,或者向更高类抛出(即在catch块中Thread.currentThread.interrupt())。
四、https://www.zhihu.com/question/23328075/answer/24228413
这篇文章介绍了sleep和wait的区别,“sleep是Thread类的方法,wait是Object类中定义的方法”,并说“可以简单认为和锁相关的方法都定义在Object类中”。
五、http://blog.youkuaiyun.com/cds86333774/article/details/50993129
该篇文章介绍了线程的五种状态。
六、http://blog.youkuaiyun.com/XSF50717/article/details/47262717
这篇文章介绍了lock和synchronized的区别以及实现原理。lock是乐观锁机制,乐观锁是java并发包下的CAS(compare and swap)实现的。synchronize是悲观锁机制,cpu独占锁,只能依靠阻塞来释放。
七、http://blog.youkuaiyun.com/natian306/article/details/18504111
嗯……这是深入研究以上两者的区别,我还没看。
八、http://ifeve.com/compare-and-swap/
cas解析,还没看。
我看了原子类的源码
九、http://blog.youkuaiyun.com/yangbutao/article/details/8479520
jdk高并发的包。
十、https://www.cnblogs.com/wxd0108/p/5479442.html
作为总结不错。