Tôi đã rối tung với ưu tiên Chủ đề trong Java và sử dụng mã bên dưới. Dường như giữ cho CPU đủ bận để ưu tiên luồng tạo ra sự khác biệt.
@Test
public void testCreateMultipleThreadsWithDifferentPriorities() throws Exception {
class MyRunnable implements Runnable {
@Override
public void run() {
for (int i=0; i<1_000_000; i++) {
double d = tan(atan(tan(atan(tan(atan(tan(atan(tan(atan(123456789.123456789))))))))));
cbrt(d);
}
LOGGER.debug("I am {}, and I have finished", Thread.currentThread().getName());
}
}
final int NUMBER_OF_THREADS = 32;
List<Thread> threadList = new ArrayList<Thread>(NUMBER_OF_THREADS);
for (int i=1; i<=NUMBER_OF_THREADS; i++) {
Thread t = new Thread(new MyRunnable());
if (i == NUMBER_OF_THREADS) {
// Last thread gets MAX_PRIORITY
t.setPriority(Thread.MAX_PRIORITY);
t.setName("T-" + i + "-MAX_PRIORITY");
} else {
// All other threads get MIN_PRIORITY
t.setPriority(Thread.MIN_PRIORITY);
t.setName("T-" + i);
}
threadList.add(t);
}
threadList.forEach(t->t.start());
for (Thread t : threadList) {
t.join();
}
}
Nguồn
2017-01-15 14:14:06
@Martin: mọi người đều biết đó là 42. –
@Martin: "42 + 0 =?" Nghe có vẻ giống như một đặt cược tốt :) Xin lỗi vì đã gửi câu hỏi của meursault, tôi thấy nó quá buồn cười để chống lại. Tôi sẽ dừng lại và kiểm tra triệu con khỉ và máy đánh chữ của tôi trong tầng hầm. –