Tôi đã có một ứng dụng đa luồng. Khi sử dụng Thread.start() để bắt đầu thủ công mỗi luồng đồng thời sử dụng chính xác 25% CPU (hoặc chính xác một lõi - đây là trên một máy lõi tứ). Vì vậy, nếu tôi chạy hai chủ đề sử dụng CPU là chính xác 50%.Java: ExecutorService kém hiệu quả hơn so với thực thi chuỗi thủ công?
Khi sử dụng ExecutorService để chạy luồng tuy nhiên, dường như có một tài nguyên CPU tiêu thụ "ma"! Một Chủ đề sử dụng 50% thay vì 25%, hai chuỗi sử dụng 75%, v.v.
Đây có phải là một số loại cửa sổ tác vụ quản lý tác phẩm không?
Excutor mã dịch vụ là
ExecutorService executor = Executors.newFixedThreadPool(threadAmount);
for (int i = 1; i < 50; i++) {
Runnable worker = new ActualThread(i);
executor.execute(worker);
}
executor.shutdown();
while (!executor.isTerminated()) {
}
System.out.println("Finished all threads");
và Thread.start mã() là:
ActualThread one= new ActualThread(2,3);
ActualThread two= new ActualThread(3,4);
...
Thread threadOne = new Thread(one);
Thread threadTtwo = new Thread(two);
...
threadOne.start();
threadTwo.start();
...
Mã ở đâu để chờ các chuỗi kết thúc trong ví dụ thứ hai? –