2010-01-16 10 views
15

Hier ist mein Code:Nur ein Thread gleichzeitig!

new Thread() { 
    @Override 
    public void run() { 
     try { player.play(); } 
     catch (Exception e) { System.out.println(e); } 
    } 
}.start(); 

, die einen Thread erstellt und startet. Ich möchte diesen Code so ändern, dass der Thread nur startet, wenn zu diesem Zeitpunkt keine anderen Threads geöffnet sind! Wenn es welche gibt, möchte ich sie schließen und diese starten. Danke im Voraus!

+3

(mit Ausnahme des Haupt-Thread, ich denke;)) –

Antwort

36

Sie können eine ExecutorService erstellen, die nur einen einzelnen Thread mit der Executors.newSingleThreadExecutor-Methode zulässt. Sobald Sie den einzelnen Thread Testamentsvollstrecker, können Sie execute mit einem Runnable Parameter nennen:

Executor executor = Executors.newSingleThreadExecutor(); 
executor.execute(new Runnable() { public void run() { /* do something */ } }); 
+0

faszinierend, weiß nicht, ob ich das brauchen werden, aber gut zu wissen. –

+0

Aber dann konnte er nur einen einzigen Thread auf einmal laufen lassen. – danben

+1

Das ist, was er will Ich dachte, nur 1 Thread dieses Typs läuft zu jeder Zeit. –

-6

Sie ein statisches Datenelement für die Klasse erstellen könnten (wo Threading stattfindet), die jedesmal, wenn ein Objekt dieser Klasse erhöht genannt wird, gelesen, dass und u die Anzahl der Threads erhalten begonnen

+1

das ist eine gute Idee, aber wie würde ich dann die anderen Threads schließen? ich hätte keinen Bezug zu ihnen –

Verwandte Themen