Hallo,
Heute haben wir im Programmierunterricht von unserem Lehrer folgendes Programm,zur demonstration der join() Methode, bekommen.
Soweit so gut, nur was mich stutzig macht:
Auf meinem Laptop wird mir am Ende manchmal eine negative Zeit für den Rechenvorgang ausgegeben, ich hab es anschließend auf anderen PCs probiert und auf denen kommt eine positive Zahl raus, der einzige Unterschied ist , dass ich einen Prozessor mit 2 Kernen habe.
Aber wie kann der zweite Kern, oder etwas anderes, verursachen das mein Programm "durch die Zeit reist?" ^^
Heute haben wir im Programmierunterricht von unserem Lehrer folgendes Programm,zur demonstration der join() Methode, bekommen.
Code:
public class ThreadJoined implements Runnable {
private Thread slave;
private long faculty;
public void test() {
slave = new Thread(this, "Faculty calculator");
slave.setPriority(slave.getPriority() + 1);
System.out.println(slave.getName()); // Faculty calculator
long start = System.nanoTime();
slave.start();
// stop and wait for the end of slave calculation
try { slave.join(); } // wait till end of slave
catch (InterruptedException e) {}
long time = System.nanoTime();
time-=start;
System.out.println( "Time: " + time + "ns " + (time/1000000) + "ms" );
System.out.println(faculty);
}
public void run() {
faculty = faculty(25);
}
private static long faculty(int n) {
long f = n;
while (n > 1) f *= --n ;
return f;
}
public static void main(String[] args) {
new ThreadJoined().test();
}
}
Soweit so gut, nur was mich stutzig macht:
Auf meinem Laptop wird mir am Ende manchmal eine negative Zeit für den Rechenvorgang ausgegeben, ich hab es anschließend auf anderen PCs probiert und auf denen kommt eine positive Zahl raus, der einzige Unterschied ist , dass ich einen Prozessor mit 2 Kernen habe.
Aber wie kann der zweite Kern, oder etwas anderes, verursachen das mein Programm "durch die Zeit reist?" ^^