<分区>
我看了很多关于数据结构的视频,总是提到这些术语:synchronized/not synchronized
和thread-safe/not thread-safe
.
谁能用简单的话向我解释一下 synchronized
和 thread-safe
在 Java 中的含义?什么是sync
,什么是thread
?
<分区>
我看了很多关于数据结构的视频,总是提到这些术语:synchronized/not synchronized
和thread-safe/not thread-safe
.
谁能用简单的话向我解释一下 synchronized
和 thread-safe
在 Java 中的含义?什么是sync
,什么是thread
?
最佳答案
一个线程
是一个程序的执行路径。单线程程序只有一个thread
,所以不会出现这个问题。事实上,所有 GUI 程序都有多个执行路径,因此线程 - 一个用于处理 GUI 的显示和处理用户输入,其他用于实际执行程序的操作。这是为了让 UI 在程序运行时仍然响应。
用最简单的术语来说,threadsafe
意味着从多个线程访问是安全的。当您在程序中使用多个线程并且它们每个都试图访问内存中的公共(public)数据结构或位置时,可能会发生一些不好的事情。所以,你添加一些额外的代码来防止那些不好的事情。例如,如果两个人同时编写同一份文档,则第二个保存的人将覆盖第一个人的工作。为了使其成为线程安全的,您必须强制第 1 个人等待第 2 个人完成他们的任务,然后才允许第 1 个人编辑文档。
Synchronized
意味着在多线程环境中,Synchronized
对象不允许两个线程同时访问一个方法/代码块。这意味着一个线程无法在另一个线程更新它的同时读取它。
第二个线程将等待第一个线程完成。开销是速度,优点是保证数据的一致性。
如果您的应用程序是单线程的,Synchronized
没有任何好处。
关于java - 术语同步和线程安全是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32163445/