我有一个Java类,用于读取UDP数据包并将其放入对象中(在基本无限循环中)。然后,在多个独立线程中访问此对象,但显然,由于同时填充它,所有这些getter/setter都在同步方法中。问题是,目前这些getter具有以下代码:
public synchronized SomeObject exampleGetter() {
if(this.isReceiving)
return oldCachedObject;
else
return currentObject;
}
显然,这并不是最好的做法,那么我该如何编写方法(很多不同的方法)来完全将对象锁定在一个线程上,并阻止其他线程(包括创建对象的线程)?我看了看同步块,但是我有点困惑“锁定对象”的效果是什么,那是在给定时间内访问该块的对象吗?任何建议都将不胜感激。谢谢!