你真的知道什么是线程安全吗?

你好,你写的太官方了,就像教科书一样……但是让我用纯文本的方式向你解释一下什么是线程安全。

上周有客户问我为什么做小程序的时候数据有时会乱,所以我就随意提到了线程安全。
其实说白了,你有几个小线程同时工作。
这些小线程可以对相同的数据进行操作,就像几个人同时修复某些东西一样。

想一想,如果线程A刚刚改变了数据,还没来得及保存,线程B就冲进来改变了数据。
当线程A再次返回时,数据就乱了。
这种情况称为线程不安全。

如何保证线程安全?我有一些小经验:
1 .锁,比如Java中的synchronized关键字,就像在共享资源上安装了一把门锁。
一次只能有一个小线程进来更改数据。
2 .使用原子类,例如AtomicInteger,它们有自己的小机制来防止意外操作。
3 .使用现成的线程安全集合,例如ConcurrentHashMap。
这些集合是专门为多线程环境设计的
我遇到的陷阱是,我过去在编写电子商务系统时没有考虑线程安全,这导致了活动期间价格的随机变化。
一些用户以负价购买了商品,最终损失惨重。
所以现在我又爱又怕线程安全...
但是话虽如此,线程安全是一件事。
用得好的话可以提高效率,用得不好的话就是一场噩梦。
如何使用取决于您的业务场景。
无论如何,你可以弄清楚,我还在考虑这个问题......。

Java 线程安全 Thread-Safety

Java线程安全简单的说就是多线程并发,数据不会乱。

问题出在哪里? Java允许多线程,但是线程之间不协调,可以释放数据。

为什么要判断? 一个就好,不一个就少动。

做什么?要么保持不变、同步,要么使用工具。

没有变化?物体是固定的,不会移动。

同步?迟到了,同步的。

使用工具? 全生米,例文账に追加ConcurrentHashMap。

别经用遆,别忘查果机。

记住,可见性、原子性、顺序是序列安全的三大法宝。
使用得当,性能和数据都是安全的。