gpt4 book ai didi

android - 正在运行的线程 Android 中的唤醒锁

转载 作者:太空狗 更新时间:2023-10-29 16:43:52 26 4
gpt4 key购买 nike

我有一个简单的问题:

在一个服务中,我需要再运行 2 个相互独立的线程,并且我需要一个唤醒锁来让它们执行。我举个例子:

   wl.aquire();

if (true) {
mExecutorService.execute(thread1);
}

if (true) {
mExecutorService.execute(thread2);
}
wl.release();

那么,在这种情况下,唤醒锁将在 2 个线程启动后释放,还是等待它们完成?

如果没有,我需要唤醒锁在它们运行时保持开启状态,并仅在最后一个线程完成时释放它。我怎样才能做到这一点?我是否必须在线程体内获取新的唤醒锁?

谢谢

最佳答案

根据Executor execute()文档:“在将来的某个时间执行给定的命令。该命令可以在新线程、池线程或调用线程中执行,由执行程序实现自行决定。”

所以这取决于您使用的具体执行器。

我认为你应该使用 submit()给执行者一份新工作。

如果您坚持使用 Executor,在 submit() 返回的 Future 上调用 get() 将阻塞,直到结果可用。

所以你可以调用:

Future<Result> result_1 = mExecutorService.execute(Runnable1);
Future<Result> result_2 = mExecutorService.execute(Runnable2);

result_1.get();
result_2.get();

或者,您可以启动两个线程并等待它们完成:

Thread t1 = new Thread(Runnable1);
Thread t2 = new Thread(Runnable2);
t1.start();
t2.start();

t1.join();
t2.join();

希望这对您有所帮助。

关于android - 正在运行的线程 Android 中的唤醒锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13345471/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com