摘要: 思路是创建两个字符串a和b,再创建两个线程A和B,让每个线程都用synchronized锁住字符串(A先锁a,再去锁b;B先锁b,再锁a),如果A锁住a,B锁住b,A就没办法锁住b,B也没办法锁住a,这时就陷入了死锁。直接贴代码: 运行的结果如图所示: 可以看到,Lock1获取obj1,Lock2获 阅读全文
posted @ 2019-03-28 18:10 菜霸 阅读(182) 评论(0) 推荐(0) 编辑
摘要: synchronized和volatile区别synochronizd和volatile关键字区别: 1. volatile关键字解决的是变量在多个线程之间的可见性;而sychronized关键字解决的是多个线程之间访问共享资源的同步性。 2. volatile只能用于修饰变量,而synchroni 阅读全文
posted @ 2019-03-28 17:47 菜霸 阅读(5558) 评论(0) 推荐(0) 编辑
摘要: 1.当前线程等待其他线程执行完毕后在执行。 2.模拟高并发场景。 在多线程编程里,CountDownLatch是一个很好的计数器工具。 常用的两个方法: 1、计数器减一 public void countDown() { sync.releaseShared(1); } 2、线程等待,在计算器未到达 阅读全文
posted @ 2019-03-28 16:55 菜霸 阅读(322) 评论(0) 推荐(0) 编辑
摘要: 1.对于wait()和notify()的理解 对于wait()和notify()的理解,还是要从jdk官方文档中开始,在Object类方法中有: void notify() Wakes up a single thread that is waiting on this object’s monit 阅读全文
posted @ 2019-03-28 16:13 菜霸 阅读(1356) 评论(0) 推荐(0) 编辑