这是一个普遍的Java问题,而不是Android的第一个问题!
我想从二级线程的上下文中了解如何在主线程上运行代码。例如:
new Thread(new Runnable() {
public void run() {
//work out pi to 1,000 DP (takes a while!)
//print the result on the main thread
}
}).start();
这类事情-我意识到我的示例有点差,因为在Java中,您不需要进入主线程即可打印出某些内容,并且Swing也具有事件队列-
但在一般情况下,您可能需要在后台线程的上下文中,在主线程上运行Runnable。
编辑:为了进行比较-这是我在Objective-C中的做法:
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0UL), ^{
//do background thread stuff
dispatch_async(dispatch_get_main_queue(), ^{
//update UI
});
});
提前致谢!
没有通用的方法只是将一些代码发送到另一个正在运行的线程中,然后说“嘿,您这样做”。您需要将主线程置于一种具有接收工作并等待工作完成的机制的状态。
这是设置主线程以等待从其他线程接收工作并在到达时运行它的简单示例。显然,您可能想添加一种方法来实际结束程序,等等……!
public static final BlockingQueue<Runnable> queue = new LinkedBlockingQueue<Runnable>();
html" target="_blank">public static void main(String[] args) throws Exception {
new Thread(new Runnable(){
@Override
public void run() {
final int result;
result = 2+3;
queue.add(new Runnable(){
@Override
public void run() {
System.out.println(result);
}
});
}
}).start();
while(true) {
queue.take().run();
}
}
问题内容: 如何在Android中从辅助线程调用主线程? 问题答案: 最简单的方法是从线程中调用runOnUiThread(…)
在一个android服务中,我创建了用于执行一些后台任务的线程。 我遇到一个情况,线程需要在主线程的消息队列上发布特定任务,例如。 有没有方法获取主线程的并从我的另一个线程向它发布/?
问题内容: 我有这段代码: 现在,我希望能够停止执行该线程。如何阻止它执行?例如,三秒钟后,我决定不再执行该命令,因此我想停止它。 问题答案: 您可以使用s。它们可以在s 上安排,并在执行前取消。
本文向大家介绍iOS 在主线程上执行,包括了iOS 在主线程上执行的使用技巧和注意事项,需要的朋友参考一下 示例 当异步执行任务时,通常需要确保在主线程上运行一段代码。例如,您可能要异步访问REST API,但将结果放在屏幕上的UILabel中。在更新UILabel之前,必须确保您的代码在主线程上运行: 每当您更新屏幕上的视图时,请始终确保您正在主线程上执行此操作,否则可能会发生未定义的行为。
本文向大家介绍Python在线运行代码助手,包括了Python在线运行代码助手的使用技巧和注意事项,需要的朋友参考一下 Python代码运行助手可以让你在线输入Python代码,然后通过本机运行的一个Python脚本来执行代码。原理如下: 在网页输入代码: 点击Run按钮,代码被发送到本机正在运行的Python代码运行助手; Python代码运行助手将代码保存为临时文件,然后调用Python解释器