【发布时间】:2011-12-21 20:32:57
【问题描述】:
我在 java 中有一个类,它读取 UDP 数据包并将它们放入一个对象中(基本上是无限循环)。然后在多个单独的线程中访问该对象,但显然,由于它是同时填充的,所有这些 getter/setter 都在同步方法中。问题是,现在这些 getter 有这样的代码:
public synchronized SomeObject exampleGetter() {
if(this.isReceiving)
return oldCachedObject;
else
return currentObject;
}
显然,这不是最好的做事方式,所以我应该如何编写方法(很多不同的方法),一次将对象完全锁定到一个线程并阻塞其他线程(包括创建的线程首先是对象)?我查看了同步块,但对于“锁定对象”有什么影响,我有点困惑,是那个在给定时间可以访问块的对象吗?任何意见,将不胜感激。谢谢!
【问题讨论】:
-
google 'java 中的生产者/消费者'
标签: java multithreading concurrency synchronization thread-safety