0
点赞
收藏
分享

微信扫一扫

多线程的安全问题

大南瓜鸭 2022-02-24 阅读 139
安全

在多线程的环境下数据什么时候会存在线程安全的问题?

1.多线程并发

2.线程之间有共享数据

3.线程之间的共享数据有修改行为

如何解决线程安全的问题?

让线程不能并发,也就是让线程排队执行,这种机制被称为“线程同步机制”,这种机制会牺牲一部分效率,但是能保证线程的安全

异步编程模型和同步编程模型

异步编程模型:A线程和B线程两个线程分别交替独立执行,也就是多线程并发,虽然效率高,但是不安全

同步编程模型:A线程需等待B线程结束才能执行,或者B线程需要等待A线程结束才能执行,两个线程之间存在排队等待的关系,效率低,但是线程安全

java中的三大变量

1.实例变量(堆中)

2.静态变量(方法区)

成员变量包括1和2

3.局部变量(栈中)

局部变量和常量不会有线程安全的问题,因为在局部变量中,线程与线程之间的内存空间是相互独立的,数据不共享。而常量是不会被修改的,也不会有·线程安全的问题

如果是局部变量,建议选择StringBuilder,因为局部变量不会有线程安全的问题,StringBuilder效率更高。

synchronized在成员变量中锁的是对象,在静态变量中锁的是类。

举报

相关推荐

0 条评论