线程的安全问题
导致安全问题的出现的原因:
多个线程访问会出现延迟
线程的随机性(一般出现在多个线程有数据共享,并且run中的语句不止只有一句)
注意:线程安全问题在理想状态下,不容易出现,但一旦出现对软件的影响是非常大的
条件:1.数据共享
2.要有多步操作
利用同步解决:在某个时刻就只允许一个线程访问,只有当这个线程访问完毕,其他的线程才有机会执行
1.同步代码块:
能不能同步的关键在于锁是否相同。
同步代码块的锁可以是任意对象实例,但是多个线程一定要用同一个锁才能锁住
2.同步数据:
同步函数的锁就是this,不用指定,默认为this
静态同步函数的锁是本类的字节码
死锁:尽量避免,一旦形成,无解,只能重新设计
线程通信:
生产者与消费者
this.notify():唤醒一条线程
this.notifyAll():唤醒所有线程
用Lock对象效率更高,编写代码也更加清晰
版权声明:本文为LYJ_holy原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。