java 。读、写、单独同步

标签 java multithreading synchronization thread-safety

我正在学习多线程,有一个小问题。 当我在线程之间共享某些变量(ArrayList,或其他类似 double、float)时,它应该由读/写中的同一个对象调用吗?我的意思是,当 1 个线程设置变量值时,另一个线程可以同时读取而不会出现任何问题吗?或者它应该被同一个对象锁定,并强制线程等待读取,直到它被另一个线程更改?

最佳答案

对共享状态的所有访问都必须由同一锁保护,包括读取和写入。读操作必须等待写操作释放锁。

作为一种特殊情况,如果您在同步块(synchronized block)中所做的所有操作都相当于一个读取或写入操作,那么您可以放弃同步块(synchronized block)并将变量标记为 volatile 。

关于 java 。读、写、单独同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25823888/

相关文章:

c# - 如何在不同线程上创建用户控件?

mysql - 如何在 mysql 复制的情况下仅重新同步一个从属 MySQL 数据库

java - 进程在 Linux 中通过 putty 的 ssh 连接被杀死

java - 多处理kafka消息

java - 从包含多个内容的代码库启动特定的 Spring Boot 服务

c++ - 我们什么时候应该选择其他IPC而不是直接内存访问来进行线程间通信

c - 多个线程使用外围例程调用相同的函数

java - 尝试使用生产者和消费者模式打印斐波那契数列

java - 如何在java spring中只运行一次方法?

java - 如何将文本区域/字段与怪物动画以及代码同步?