저는 Java에 익숙하지 않으며 실습으로 스레드 라이브러리를 작성하려고합니다. 이 방법으로 작동합니다.작업자 스레드간에 작업을 배포하는 데 사용할 큐의 유형
주 스레드에서 일부 작업 (문자열)이 작업 대기열에 추가되고 작업자 스레드가 작업을 완료하면 완료 대기열에 추가됩니다. 메인 쓰레드는 완성 된 큐에서 결과를 얻습니다. 모든 작업이 완료되면 주 스레드가 작업자에게 작업을 중지 할 것을 알립니다. 여기에 내가 지금까지 쓴 몇 가지 코드가있다 :
public List<int> get() {
WorkerThread[] threads = new WorkerThread[numThreads];
LinkedList<int> results = new LinkedList<>();
int workCount = 0;
for (int i = 0; i < numThreads; i++) {
threads[i] = new WorkerThread();
threads[i].start();
}
// reader is a BufferedReader
while ((String line = reader.readLine()) != null) {
// put string to job queue
workCount++
}
while(workCount) {
//result = get result from finished queue, and add it to results LinkedList
workCount--;
}
for (int i = 0; i < numThreads; i++) {
threads[i].canStop(); // this sets a private variable that makes infinite while loop to stop
threads[i].join();
}
return results;
}
그러나 나는 어떤 종류의 큐 구현을 위해 이것을 사용하는지 혼란 스럽다. documentation은 11 가지 다른 종류의 큐 구현을 보여줍니다.
새로운 Java 7 또는 8 기능입니까? 원시 제네릭? 정말? –
이것은 Java 7입니다. 나는 정말 새롭고, 분명한 실수가 있다면 정말 미안합니다. – yasar
이 코드가 컴파일됩니까? 나는 그것에 대한 어떤 언급도 찾을 수 없다. –