gpt4 book ai didi

java - 同步模式

转载 作者:搜寻专家 更新时间:2023-10-31 19:34:45 24 4
gpt4 key购买 nike

我有一个名为“Channel”的类,其中定义了两个方法:

class Channel {

void read(){...}
void write(){...}
}

这个类有一个实例用于多线程环境。多个线程定期从 channel 读取,而一个线程定期写入 channel 。读取操作是线程安全的,因此可以同时进行多个读取。然而一旦写操作开始,读线程必须被阻塞直到写操作完成。尽可能快地保持读取操作并避免消耗资源的同步例程至关重要。

实现此类行为的最合适模式是什么?也许 java 类或库有帮助?

最佳答案

使用 ReadWriteLock .它将允许并发读取与串行写入一起发生。为了进一步满足您的要求,获取 writeLock 将阻止任何 readLock 在后续版本之前取得进展。

class Channel {
final ReadWriteLock lock = new ReentrantReadWriteLock();

void read(){
lock.readLock().lock();
try{

}finally{
lock.readLock().unlock();
}
}
void write(){
lock.writeLock().lock();
try{

}finally{
lock.writeLock().unlock();
}
}
}

关于java - 同步模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9134161/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com