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. boolean isCancelled()
Gibt „true“ zurück, wenn die aufrufbare Aufgabe abgebrochen wird, bevor sie normal abgeschlossen wird. boolean isDone()
Gibt true zurück, wenn die Callable-Aufgabe abgeschlossen wurde. <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>
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!