尽管我阅读了维基百科等等,但我仍然不太了解线程安全在编程意义上的含义。是否有人能够以外行的方式提供一些Java示例?比如什么使线程安全而线程不安全?
谢谢!
答案 0 :(得分:8)
我认为从计算机外的具体事物来考虑是有帮助的。 (并发编程在数字计算机发明之前很久就已经完成。)
汽车是一个过程。交集是共享资源。如果灯光同时在多个方向上呈绿色,那么它可能不是线程安全的。
答案 1 :(得分:2)
这是一个模糊的术语 - 对它的实际含义没有确切的一致意见。
然而,通常情况下,人们指的是可以同时从多个线程调用的代码而不会出错。
即 - 代码被认为是线程安全的,如果它可以同时从多个线程调用,并保证不会导致错误。
答案 2 :(得分:0)
这不是线程安全与否。这是保护对象中的状态不被多个线程更新的方式。因此,如果一次只有一个线程可以更新变量,那么你就不会遇到某种不一致或不可预测的状态,这是安全的。
线程不安全的示例:您有一个对象,该对象具有一个实例变量,该变量存储项目列表,该对象中的1个方法用于保存计算结果,该计算结果将在完成时返回。如果两个线程同时调用该方法,则该运行方法的两个实例将尝试更新相同的列表,以便方法的结果将被混合。