M
michaNoX
Gast
Hallo,
ich beschäftige mich derzeit mit reaktionszeitmessungen und kam darüber zu Java, wovon ich leider bisher keine Ahnung habe/hatte.
Ich probiere vereinfacht folgendes:
long Anfang = System.currentTimeMillis();
Thread.sleep(limit);
long Ende = System.currentTimeMillis();
long Differenz = Ende - Anfang - limit;
Theorie dahinter: wenn Differenz nicht null, dann Verzögerung durch zu hohe Auslastung auf Rechner
nun habe ich aber bemerkt, dass die Differenz abhängig ist von limit (und das unabhängig davon, ob zeitgleich ein oder mehrere Threads).
500 --> Differenz von 0 ms
600 --> Differenz von 9-10 ms
700 --> Differenz von 3 ms
800 --> Differenz von 12-13 ms
900 --> Differenz von 6-7 ms
1000 --> Differenz von 0 ms
Wo liegt mein Denkfehler bei dem Vorgehen (dies wird in psych. Fachliteratur aber als 'guter' Filter für Fehlmessungen angepriesen -> http://psycho.hsu-hamburg.de/experimente/Marktforschung/RTviaJava.pdf) oder wo ist der Fehler im Script.
Besten Dank jetzt bereits für Eure Hinweise
Quelltexte:
ich beschäftige mich derzeit mit reaktionszeitmessungen und kam darüber zu Java, wovon ich leider bisher keine Ahnung habe/hatte.
Ich probiere vereinfacht folgendes:
long Anfang = System.currentTimeMillis();
Thread.sleep(limit);
long Ende = System.currentTimeMillis();
long Differenz = Ende - Anfang - limit;
Theorie dahinter: wenn Differenz nicht null, dann Verzögerung durch zu hohe Auslastung auf Rechner
nun habe ich aber bemerkt, dass die Differenz abhängig ist von limit (und das unabhängig davon, ob zeitgleich ein oder mehrere Threads).
500 --> Differenz von 0 ms
600 --> Differenz von 9-10 ms
700 --> Differenz von 3 ms
800 --> Differenz von 12-13 ms
900 --> Differenz von 6-7 ms
1000 --> Differenz von 0 ms
Wo liegt mein Denkfehler bei dem Vorgehen (dies wird in psych. Fachliteratur aber als 'guter' Filter für Fehlmessungen angepriesen -> http://psycho.hsu-hamburg.de/experimente/Marktforschung/RTviaJava.pdf) oder wo ist der Fehler im Script.
Besten Dank jetzt bereits für Eure Hinweise
Quelltexte:
Code:
public class WorkOneApp {
public static void main(String[] args) {
WorkOne work1 = new WorkOne("A", 500); // 0 ms
WorkOne work2 = new WorkOne("B", 600); // 9-10 ms
WorkOne work3 = new WorkOne("C", 700); // 3 ms
WorkOne work4 = new WorkOne("D", 800); // 12-13 ms
WorkOne work5 = new WorkOne("E", 900); // 6-7 ms
WorkOne work6 = new WorkOne("F", 1000); // 0 ms
work1.start();
work2.start();
work3.start();
work4.start();
work5.start();
work6.start();
}
}
Code:
public class WorkOne extends Thread {
String name;
int limit;
public WorkOne(String s, int n) {
name = s;
limit = n;
}
public void run() {
long Anfang = System.currentTimeMillis();
try {
Thread.sleep(limit);
} catch(InterruptedException e){
System.out.println("Thread "+name+": Sleep Interrupted");
}
long Ende = System.currentTimeMillis();
long Differenz = Ende - Anfang - limit;
//System.out.println(Anfang + " -- "+Ende);
System.out.println("Thread" +name+ " --> Differenz von in ms: "+Differenz);
}
}