Java 术语“同步”和“线程安全”是什么意思?

Java 术语“同步”和“线程安全”是什么意思?,java,synchronization,thread-safety,Java,Synchronization,Thread Safety,我看了很多关于数据结构的视频,经常提到这些术语:synchronized/notsynchronized和thread safe/not thread safe 有人能用简单的话向我解释一下Java中的synchronized和thread safe是什么意思吗?什么是sync什么是thread?Athread是程序的执行路径。单线程程序只有一个线程,因此不会出现此问题。实际上,所有GUI程序都有多个执行路径和线程——一个用于处理GUI显示和处理用户输入,另一个用于实际执行程序操作。这样,当程序

我看了很多关于数据结构的视频,经常提到这些术语:
synchronized/notsynchronized
thread safe/not thread safe


有人能用简单的话向我解释一下Java中的
synchronized
thread safe
是什么意思吗?什么是
sync
什么是
thread

A
thread
是程序的执行路径。单线程程序只有一个
线程
,因此不会出现此问题。实际上,所有GUI程序都有多个执行路径和线程——一个用于处理GUI显示和处理用户输入,另一个用于实际执行程序操作。这样,当程序运行时,UI仍能响应

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

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

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

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

根据:

如果从中访问时行为正确,则类是线程安全的 多个线程,不考虑线程的调度或交错 由运行时环境执行这些线程,并且没有 服务器端的额外同步或其他协调 呼叫代码

因此,线程安全性是程序在被多个线程访问时所期望的行为。使用
synchronized
块是实现该行为的一种方法。您还可以检查以下各项:


Java教程中解释了和的可能重复项。@ErkiM.,但什么是多线程环境。实际上,
thread
在java中意味着什么?对于SO的格式来说,这太宽泛了。另外,还有很多资源涵盖了这样的基本定义。你在哪里找的?你读到的东西有什么不明白的?你必须更加具体,否则我们将不知道如何帮助你,除了倒流已经存在并且很容易找到的东西。