java - 'synchronized' 是什么意思?

标签 java multithreading keyword synchronized

我对 synchronized 关键字的用法和意义有一些疑问。

  • synchronized关键字有什么意义?
  • 方法什么时候应该同步
  • 在编程和逻辑上是什么意思?

最佳答案

synchronized 关键字是关于不同线程读取和写入相同变量、对象和资源的全部内容。这不是 Java 中的一个小话题,但这里引用 Sun 的一段话:

synchronized methods enable a simple strategy for preventing thread interference and memory consistency errors: if an object is visible to more than one thread, all reads or writes to that object's variables are done through synchronized methods.

简而言之:当你有两个线程正在读取和写入同一个“资源”时,比如说一个名为 foo 的变量,你需要确保这些线程以原子方式访问变量。如果没有 synchronized 关键字,您的线程 1 可能看不到线程 2 对 foo 所做的更改,或者更糟的是,它可能只更改了一半。这不会是你在逻辑上所期望的。

同样,这在 Java 中是一个重要的话题。要了解更多信息,请在此处探索关于 SO 和 Interwebs 的主题:

继续探索这些主题,直到 “Brian Goetz” 这个名字在你的大脑中与“并发” 一词永久关联。

关于java - 'synchronized' 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1085709/

相关文章:

java - 当用户按下 Java 中的按键时,如何启动应用程序?

java - xslt 转换不关闭标签

java - Netbeans 平台中的多线程编程

javascript函数和this关键字,上下文

java - java中如何返回父类

java - jar文件不会执行

java - 如何动态创建java bean?

c - 如何在 C/C++ 中写入不同线程的堆栈?

.net - 如何在自定义类型中实现 Control.Invoke 模拟?

java - "Throws"有什么作用,它有什么用?