Heim > Java > javaLernprogramm > So implementieren Sie die Callable-Schnittstelle, um eine Thread-Klasse in Java zu erstellen

So implementieren Sie die Callable-Schnittstelle, um eine Thread-Klasse in Java zu erstellen

PHPz
Freigeben: 2023-05-11 11:58:06
nach vorne
1031 Leute haben es durchsucht

Implementieren Sie die Callable-Schnittstelle, um eine Thread-Klasse zu erstellen.

Die Callable-Schnittstelle wird seit Java 5 bereitgestellt. Diese Schnittstelle ist eine erweiterte Version der Runnable-Schnittstelle und stellt eine call()-Methode als Thread-Ausführungskörper bereit ()-Methode kann einen Rückgabewert haben. Die call()-Methode kann deklariert werden, um eine Ausnahme auszulösen.

  • boolean cancel(boolean may) Versucht, die zugehörige aufrufbare Aufgabe in dieser Zukunft abzubrechen. boolean cancel(boolean may) 试图取消该 Future 里关联的 Callable 任务。

  • V get() 返回 Call 任务里 call() 方法的返回值。调用该方法会照成线程阻塞,必须等待子线程结束后才会得到返回值。

  • V get(long timeout,TimeUnit unit) 返回 Call 任务里 call() 方法的返回值。该方法让程序最多阻塞 timeout 和 unit 指定的时间,如果经过指定的时间,如果经过指定的时间依然没有返回值,将会抛出 TimeoutException 异常。

  • boolean isCancelled() 如果在 Callable 任务正常完成前被取消,则返回 true。

  • boolean isDone() 

V get() Gibt den Rückgabewert der call()-Methode in der Call-Aufgabe zurück. Der Aufruf dieser Methode führt zum Blockieren des Threads und Sie müssen warten, bis der untergeordnete Thread beendet ist, bevor Sie den Rückgabewert erhalten.


    V get(long timeout,TimeUnit unit) Gibt den Rückgabewert der call()-Methode in der Call-Aufgabe zurück. Mit dieser Methode kann das Programm bis zu der durch Timeout und Unit angegebenen Zeit blockieren. Wenn die angegebene Zeit verstrichen ist und nach der angegebenen Zeit immer noch kein Rückgabewert vorhanden ist, wird eine TimeoutException-Ausnahme ausgelöst.
  1. boolean isCancelled() Gibt „true“ zurück, wenn die aufrufbare Aufgabe abgebrochen wird, bevor sie normal abgeschlossen wird.
  2. boolean isDone() Gibt true zurück, wenn die Callable-Aufgabe abgeschlossen wurde.
  3. Ausführbare Implementierungsschritte:
Erstellen Sie eine Implementierungsklasse der Callable-Schnittstelle und implementieren Sie die call()-Methode als Ausführungskörper des Threads, und die call()-Methode hat ein Rückgabewert. 🎜🎜🎜🎜Verwenden Sie die FutureTask-Klasse, um das Callable-Objekt zu umschließen. 🎜🎜🎜🎜Verwenden Sie das FutureTask-Objekt als Ziel des Thread-Objekts, um einen neuen Thread zu erstellen und zu starten. 🎜🎜🎜🎜Aktivieren Sie die get()-Methode des FutureTask-Objekts, um den Rückgabewert des untergeordneten Threads abzurufen. 🎜🎜🎜
<code>public class CallableDemo implements Callable<Integer> {<br>    public static void main(String args[]) {<br>        FutureTask<Integer> futureTask = new FutureTask<Integer>(new CallableDemo());<br>        new Thread(futureTask).start();<br>        try {<br>            System.out.println("子线程返回值:" + futureTask.get());<br>        } catch (InterruptedException e) {<br>            e.printStackTrace();<br>        } catch (ExecutionException e) {<br>            e.printStackTrace();<br>        }<br>        if (futureTask.isDone()) {<br>            System.out.println("线程结束");<br>        }<br>    }<br><br>    @Override<br>    public Integer call() throws Exception {<br>        System.out.println("线程开始");<br>        int ss = 0;<br>        for (int i = 0; i < 20; i++) {<br>            ss += i;<br>        }<br>        return ss;<br>    }<br>}</code>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonSo implementieren Sie die Callable-Schnittstelle, um eine Thread-Klasse in Java zu erstellen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage