我有一个大问题给你。如何同步同一个类中的两个不同方法以锁定同一个对象?这里是一个例子:Java同步对象
public class MyClass extends Thread implements Observer{
public List<AnotherClass> myList = null;
public MyClass(List<AnotherClass> myList){
this.myList = myList;
}
public void run(){
while(true){
//Do some stuff
myList.add(NotImportantElement);
}
}
public void doJob{
for(int i=0; i<myList.size; i++){
ElementClass x = myList.get(i);
//Do some more stuff
}
}
}
问题是我怎么能停止运行()访问myList时doJob执行和viceversa?
想象一下:我启动线程并开始添加元素到我的列表中。在随机时刻,我从另一个拥有对我的线程的引用的类调用doJob()。
我应该怎么做锁?谢谢!
L.E.
好吧,我了解锁的概念,但现在我有另一个问题。
假设我有一个类public static myList
,只有一个该类的实例。在这种情况下,我创建了Thread
的n
实例,它将该列表的每个元素都包含在内,并对其执行一些操作。
现在,在特定时刻,myList
已更新。那些已经在处理myList元素的线程会发生什么?在更新时如何锁定myList
上的访问权限?
@Grammin我会说,没关系。 – Mob
如果您还有其他问题,最好的办法是打开另一个帖子。这样就可以看到。 –