Java线程安全问题

线程的安全问题

导致安全问题的出现的原因:

        多个线程访问会出现延迟

        线程的随机性(一般出现在多个线程有数据共享,并且run中的语句不止只有一句)

注意:线程安全问题在理想状态下,不容易出现,但一旦出现对软件的影响是非常大的

        条件:1.数据共享

                   2.要有多步操作

        利用同步解决:在某个时刻就只允许一个线程访问,只有当这个线程访问完毕,其他的线程才有机会执行

        1.同步代码块:

                能不能同步的关键在于锁是否相同。

                同步代码块的锁可以是任意对象实例,但是多个线程一定要用同一个锁才能锁住

        2.同步数据:

                同步函数的锁就是this,不用指定,默认为this

                静态同步函数的锁是本类的字节码

        死锁:尽量避免,一旦形成,无解,只能重新设计

​​​​​​​

线程通信:

        生产者与消费者

        this.notify():唤醒一条线程

        this.notifyAll():唤醒所有线程

用Lock对象效率更高,编写代码也更加清晰


版权声明:本文为LYJ_holy原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。