Java从线程返回值

我有一个方法HandlerThread。值在内部被更改Thread,我想将其返回给该test()方法。有没有办法做到这一点?

public void test()

{

Thread uiThread = new HandlerThread("UIHandler"){

public synchronized void run(){

int value;

value = 2; //To be returned to test()

}

};

uiThread.start();

}

回答:

可以使用局部最终变量数组。该变量必须是非基本类型,因此可以使用数组。你还需要同步两个线程,例如使用CountDownLatch:

public void test()

{

final CountDownLatch latch = new CountDownLatch(1);

final int[] value = new int[1];

Thread uiThread = new HandlerThread("UIHandler"){

@Override

public void run(){

value[0] = 2;

latch.countDown(); // Release await() in the test thread.

}

};

uiThread.start();

latch.await(); // Wait for countDown() in the UI thread. Or could uiThread.join();

// value[0] holds 2 at this point.

}

你也可以这样使用an Executor和a Callable:

public void test() throws InterruptedException, ExecutionException

{

ExecutorService executor = Executors.newSingleThreadExecutor();

Callable<Integer> callable = new Callable<Integer>() {

@Override

public Integer call() {

return 2;

}

};

Future<Integer> future = executor.submit(callable);

// future.get() returns 2 or raises an exception if the thread dies, so safer

executor.shutdown();

}

以上是 Java从线程返回值 的全部内容, 来源链接: utcz.com/qa/424133.html

回到顶部