【问题标题】:Interrupting the main thread with no impact on existing code中断主线程而不影响现有代码
【发布时间】:2015-12-13 15:39:31
【问题描述】:

怎样才能中断主线程,而不影响现有的代码执行?

因为你知道代码 Thread.sleep();对之前的代码有影响。

我特别需要的是强制程序脉​​冲 1 秒然后运行其余部分的代码。但是不要影响hole程序(我是指那个代码之前写的代码)

【问题讨论】:

  • - 什么是“代码前”?如果你让一个线程休眠,这个线程会被阻塞一段时间,但其他线程会尽可能地继续。也许您可以更准确地描述您的问题?那么你可能会得到更好的答案。
  • 程序中没有其他线程。
  • 我在 UI 中有一些灯光。我想接这些灯,但要在 50 毫秒之内。并且接下来的代码将在其中执行。
  • 根据您的说明,您可能希望将问题改写为:“如何让程序每秒执行一次代码”。您并没有真正考虑中断线程或阻止它,而是每隔一段时间执行一次给定的任务(“UI 灯”)。将消息放入事件队列的计时器是一种方法。

标签: interrupted-exception


【解决方案1】:

我为我的问题找到了一种解决方案: 我们可以为此使用一组线程和一组处理程序以及 postDelayed 方法。

例如这段代码:

for (int i = 0; i < executeCount; i++) {
    final int j = i;
    arrayThread.add(new Thread(new Runnable() {

        @Override
        public void run() {
            arrayhandler.get(j).postDelayed(new Runnable() {

                @Override
                public void run() {
                    doSomeThings();

                    if(j == executeCount -1){
                        doNextCodes();  
                    }
                }
            }
            , (j * WaitingTime));
        }
     }));
 arrayThread.get(j).start();
 }

这段代码执行“doSomeThings();” “executeCount”次的每“WaitingTime”秒。最后当“j == executeCount -1”程序执行“doNextCodes();” .

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-28
    • 2021-09-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多