タイトルにあるように、スレッドベースの構造に問題があります。私がする必要があるのは:
1つのスレッドがループで実行され、リストに何かが存在するかどうかを確認し、存在する場合は、オブジェクトに対して何らかの操作を実行してから、リストから削除します
'outside'から呼び出され、このリストに新しいオブジェクトを追加する関数。
これが私のアプローチです:
public class Queue implements Runnable {
private List<X> listOfObjects = new ArrayList<X>;
public void addToList(X toAdd){
listOfObject.add(toAdd);
}
public void run() {
while(true){
synchronized(listOfObjects){
if(!listOfObjects.isEmpty()){
listOfObjects.get(0).doSth();
listOfObjects.remove(0);
}
}
}
}
}
それは適切なアプローチですか?このリストへの追加も同期する必要がありますか?