Java 有人能用外行术语解释线程安全性吗?

Java 有人能用外行术语解释线程安全性吗?,java,thread-safety,Java,Thread Safety,尽管我读过维基百科之类的东西,但我还是不太明白线程安全在编程意义上意味着什么。有人能用外行的术语给出一些Java示例吗?例如,是什么使线程安全还是线程不安全 谢谢 这是一个模糊的术语——对于它的实际含义没有确切的一致意见 然而,通常情况下,人们指的是可以从多个线程同时调用而不会出错的代码 也就是说,如果代码可以同时从多个线程调用,并且保证不会导致错误,那么代码被认为是线程安全的。这不是线程是否安全。它是如何保护对象中的状态不被多个线程更新的。因此,如果一次只有一个线程可以更新一个变量,这样就不会

尽管我读过维基百科之类的东西,但我还是不太明白线程安全在编程意义上意味着什么。有人能用外行的术语给出一些Java示例吗?例如,是什么使线程安全还是线程不安全


谢谢

这是一个模糊的术语——对于它的实际含义没有确切的一致意见

然而,通常情况下,人们指的是可以从多个线程同时调用而不会出错的代码


也就是说,如果代码可以同时从多个线程调用,并且保证不会导致错误,那么代码被认为是线程安全的。

这不是线程是否安全。它是如何保护对象中的状态不被多个线程更新的。因此,如果一次只有一个线程可以更新一个变量,这样就不会出现不一致或不可预测的状态,这是安全的


线程不安全的一个示例:您有一个对象,该对象具有一个实例变量,该实例变量存储一个项目列表,该对象中的一个方法使用该列表保存计算结果,该结果将在完成时返回。如果两个线程同时调用该方法,则运行该方法的两个实例都将尝试更新相同的列表,以便将方法的结果混合在一起。

我认为从计算机之外的具体事物的角度思考是有帮助的。(并行编程早在数字计算机发明之前就已经完成了。)


汽车是一个过程。交叉点是共享资源。如果同时在多个方向上指示灯是绿色的,那么它可能不是线程安全的。

因此,重读维基百科,我仍然不能100%确定的部分是,线程安全意味着如果我有一些函数,如果我可以让多个线程调用同一个函数而不会导致错误,那么它被认为是线程安全的。如果它们共享某个变量或某个函数,而该变量或函数不允许在多个实例中运行,则可能会发生错误。对吗?通常这样的错误会导致挂起或崩溃?因此,如果我有某个函数中断正在运行的函数,那么只有在我能够安全地恢复它时,该函数才会被声明为线程安全的,对吗?@souleschild-线程安全的主要问题不仅仅是共享数据(变量/s)-而是函数是否以不安全的方式更改共享数据。这正是我所寻找的!谢谢在重读了几遍维基百科的文章,然后看到你的文章,我觉得它很有意思。所有可重入的东西都让我感到困惑,因为我认为我已经理解了!