java - 术语同步和线程安全是什么意思?

标签 java synchronization thread-safety

<分区>

我看了很多关于数据结构的视频,总是提到这些术语:synchronized/not synchronizedthread-safe/not thread-safe.

谁能用简单的话向我解释一下 synchronizedthread-safe 在 Java 中的含义?什么是sync,什么是thread

最佳答案

一个线程是一个程序的执行路径。单线程程序只有一个thread,所以不会出现这个问题。事实上,所有 GUI 程序都有多个执行路径,因此线程 - 一个用于处理 GUI 的显示和处理用户输入,其他用于实际执行程序的操作。这是为了让 UI 在程序运行时仍然响应。

用最简单的术语来说,threadsafe 意味着从多个线程访问是安全的。当您在程序中使用多个线程并且它们每个都试图访问内存中的公共(public)数据结构或位置时,可能会发生一些不好的事情。所以,你添加一些额外的代码来防止那些不好的事情。例如,如果两个人同时编写同一份文档,则第二个保存的人将覆盖第一个人的工作。为了使其成为线程安全的,您必须强制第 1 个人等待第 2 个人完成他们的任务,然后才允许第 1 个人编辑文档。

Synchronized 意味着在多线程环境中,Synchronized对象不允许两个线程同时访问一个方法/代码块。这意味着一个线程无法在另一个线程更新它的同时读取它。

第二个线程将等待第一个线程完成。开销是速度,优点是保证数据的一致性。

如果您的应用程序是单线程的,Synchronized 没有任何好处。

关于java - 术语同步和线程安全是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32163445/

相关文章:

c++ - std::mutex 作为多线程的成员变量线程安全吗?

java - Java 转换是如何工作的?

ios - 在 iOS 应用程序和 mac 之间同步信息的应用程序

python - 在 Python 中,如何将磁盘上的 JSON 文件绑定(bind)到进程中的字典?

Java线程安全代码

java - 防御性复制是否足以从可变线程不安全类创建不可变线程安全类?

java - 我应该怎么做才能在图像中看到复平面的一般矩形区域?

java - 添加用户输入的两个值

java - 解释 Java VM 非标准选项的好资源

java - 为什么这个数据库同步例程失败?