java - 线程实际上是如何工作的?

标签 java multithreading jakarta-ee thread-safety

这是一个场景

例如,我们有两个线程都访问同一段代码,并且该代码有一个变量

int a=200;

线程A进入并将其值更改为a=300;

那么线程B访问这个变量,线程B会得到200还是300?

最佳答案

不保证两个线程以任何固定顺序执行; A 中的任何操作都可以先于 B 中的任何操作(前提是这些操作仍然在其自己的线程内按顺序流动)。

因此,如果没有同步,A 可能会在 B 访问它之前或之后更改其值。如果 A 在 B 之前更改,则 B 看到 300;否则,B 看到 200。

关于java - 线程实际上是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12908025/

相关文章:

java - 派生自具有注解 @PostConstruct 的类

java - 是否可以使用 Spring Cloud Config 将复杂的配置传递给 Spring Cloud Stream 函数

Java applet 不能在 JRE7 下运行,控制台不显示错误

c++ - 在对其进行线程操作后保存 GDI+ 位图

java - 客户端服务器应用程序是如何实现的? (服务器端)(询问概念)

java - JPA EntityManager 未注入(inject) Java EE 应用程序

java - DAO包结构

java - HttpServletRequest 重用

c++ - 如何使用同一个函数C++实例化多个线程

java - Servlet 问题 - 资源不可用