Wie suspendiere ich einen Java-Thread für eine kurze Zeit, zB 100 Nanosekunden?

Ich weiß Thread.sleep() kann ein java-thread anhalten für eine Weile, wie einige Millisekunden und bestimmte Nanosekunden. Aber das problem ist der Aufruf dieser Funktion bewirkt auch, dass overhead.

Zum Beispiel, wenn ich will, einen thread zu sperren für 100 Nanosekunden, und ich nenne Thread.sleep(0, 100). Die gesamten Kosten für diesen Prozess ist invocation_cost + 100 nanosceonds, die viel größer ist das, was ich will. Wie könnte ich dieses problem vermeiden, und erreichen mein Ziel?

Den Grund brauche ich dies, die ich tun möchte-simulation offline. Ich profiliert die Ausführungszeit einer Aufgabe; Nun möchte ich, um dies zu simulieren Ausführungszeit durch das Aufhängen einen Faden in der gleichen Zeit.

Dank!

Kommentar zu dem Problem
Hast du einen bestimmten Grund, warum Sie dies tun wollen? Wenn dem so ist, kann es gelöst werden, eine andere Art und Weise... Kommentarautor: g t
Dies ist eine sehr ungewöhnliche Anforderung. Es klingt wie Sie brauchen eine back off Strategie oder ähnlich. Kommentarautor: Bohemian
@gt FYI, es ärgerlich zu Fragen auf stackoverflow und Antworten, Frage Sie, anstatt eine Antwort. Es gibt viele Gründe für den Wunsch, das zu tun, sich in Projekten über die Jahre. Ein praktischer Grund wäre für die Aufrechterhaltung Echtzeit-Verhalten bei Anwendungen, die Aufzeichnung von audio-hardware, da die hardware inkonsistent Verhalten, oder Sie können die Simulation von hardware-Verhalten für Testzwecke . Kommentarautor: EntangledLoops
@EntangledLoops Dank für die Bereitstellung ein Beispiel. Ich zweifle nicht, es gibt gute Gründe, dies zu tun. Ich finde die besten Antworten werden oft zu berücksichtigen, in welchem Kontext die Frage gestellt wurde. Blick auf Peter Lawrey die Antwort von unten zu sehen, ein Beispiel, einmal-OP-vorausgesetzt, ein paar hintergrund-info. Kommentarautor: g t

InformationsquelleAutor der Frage JackWM | 2012-07-16

Schreibe einen Kommentar