//Документация это да... Но только ее читаешь и ничего не чувствуешь... а тут бери и запускай!!! И наглядно посмотришь что сколько и когда //переключалось... просто и понятно...
class Thr implements Runnable {
Thread t;
public long clicks = 0;
private volatile boolean runnin = true;
private String label;
public Thr(int p, String label) {
t = new Thread(this);
t.setPriority(p);
this.label = label;
}
public void run() {
while (runnin) {
System.out.print(label);
clicks++;
Thread.yield();
}
}
public void stop() {
runnin = false;
}
public void start() {
t.start();
}
}
class ThrTest {
public static void main(String[] args) {
Thr hi = new Thr(Thread.MAX_PRIORITY, "h");
Thr lo = new Thr(Thread.MIN_PRIORITY, "l");
hi.start();
lo.start();
try {
Thread.sleep(100);
} catch (InterruptedException e) {
System.out.println("перервано головний потік");
}
hi.stop();
lo.stop();
try {
hi.t.join();
} catch (InterruptedException e) {
System.out.println("перервано інший потік");
}
try {
lo.t.join();
} catch (InterruptedException e) {
System.out.println("перервано інший потік");
}
System.out.println("\nhi " + hi.clicks);
System.out.println("lo " + lo.clicks);
}
}
Я слегка поменял... чисто для тебя, для наглядности... это должно и под винодой давай приблизительно такие же результаты. позапускай ее несколько раз подряд и посмотри на результаты! Иногда они удивляют... но это только в первый раз... и у меня двухъядерный процессор... но думаю что это не сильно скажется. Вообще по хорошему в многопоточном приложении нельзя полагаться вообще ни на что... т.е. гарантий нет!
Вообще ява мой любимый язык... приятно вспомнить...