제목에 스레드 기반 구조에 문제가 있습니다. 내가 뭘해야입니다 :arrayList에서 스레드 제거 및 함수 삽입
하나의 스레드는 루프에서 실행 및 점검 목록에 뭔가가 존재하는 경우 등 다음 객체에 대한 몇 가지 작업을 수행하는 경우 다음 목록에서입니다
기능을 제거 '외부'에서 호출하고이 목록에 새 객체를 추가합니다. 그것이 올바른 접근 방식
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); } } } } }
가 : 여기
처리 할 대기열이 길면 어떻게됩니까? 모든 요소가 처리 될 때까지 새 요소를 추가합니까? – xwhyz
대기열이 가득 차면 생성자에서 크기를 지정하고 생성자 블록에서 크기를 지정할 수 있습니다. 이를 제한된 대기열이라고합니다. –
블로킹 큐의 일부 구현으로이를 구성 할 수 있다고 생각합니다. http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/LinkedBlockingDeque.html (예 : –