use*_*885 1 java multithreading synchronization
你有一个存储对象O.
假设您在一个线程中有n个读者方法和一个编写器方法.如果一个线程调用了writer方法,那么读者方法都不能访问O,但如果一个reader方法访问O,那么任何其他读者都可以访问O而不是writer.我可以使用Java中的"synchronized"语句以某种方式实现此行为吗?如果没有:我怎么能做到这一点?
先感谢您.
你可以用一个ReadWriteLock.您可以将它分配给读写器线程可以访问它的位置.也许将它传递给他们的构造函数.
ReadWriteLock readWriteLock = new ReentrantReadWriteLock();
Run Code Online (Sandbox Code Playgroud)
读者会这样做:
Lock lock = readWriteLock.readLock();
lock.lock();
try {
// do read operations here...
} finally {
lock.unlock();
}
Run Code Online (Sandbox Code Playgroud)
作家会这样做:
Lock lock = readWriteLock.writeLock();
lock.lock();
try {
// do write operations here...
} finally {
lock.unlock();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
76 次 |
| 最近记录: |