A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  • Lock()实现提供了比使用synchronized方法和语句可获得更广泛的锁定操作。
  • private Lock lock =new ReentrantLock();
  • 被锁的代码要用   lock.lock()                lock.unlock()    包括。其中用try   。。。finally包围
  • 同步:效率低,如果出现同步嵌套,会出现死锁。  但是安全。
  • 死锁问题:两个或者两个以上的线程在争夺资源的过程中,发生的一种相互等待的现象
  • 线程间通信,不同种类的线程针对同一资源的操作。
  • 多线程还可能出现同一个数据出现多次,或者输出不匹配问题。都属于线程安全问题。
  • 等待 唤醒机制

  • Object类中wait()等待         notify()唤醒单个线程     notifyAll()唤醒所有线程
  • 这些方法调用必须通过锁对象调用,二我们刚才使用的锁对象是任意锁对象。
    wait()要用try catch包围    用唤醒notify()来解决死锁
    即一个run()里判断一个条件,如果成立就锁调用wait(),如果不成立,锁的判断条件改变,然后调用notify()唤醒。
  • 运行状态图:



6 个回复

倒序浏览
这个博文真不错,后面得认真看看!
回复 使用道具 举报
Lock?  我还以为JAVA中没有Lock呢
回复 使用道具 举报
很好,点都说到了,受教了
回复 使用道具 举报
每看到一次都是在复习
回复 使用道具 举报
学习了!!
回复 使用道具 举报
很详细,多谢分享!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马