我正在学习多线程,有一个小问题。 当我在线程之间共享某些变量(ArrayList,或其他类似 double、float)时,它应该由读/写中的同一个对象调用吗?我的意思是,当 1 个线程设置变量值时,另一个线程可以同时读取而不会出现任何问题吗?或者它应该被同一个对象锁定,并强制线程等待读取,直到它被另一个线程更改?
最佳答案
对共享状态的所有访问都必须由同一锁保护,包括读取和写入。读操作必须等待写操作释放锁。
作为一种特殊情况,如果您在同步块(synchronized block)中所做的所有操作都相当于一个读取或写入操作,那么您可以放弃同步块(synchronized block)并将变量标记为 volatile 。
关于 java 。读、写、单独同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25823888/