如何保持线程可靠运行

时间:2015-10-08 02:48:11

标签: java multithreading

我创建了一个技术上运行24 * 7的程序。

顺便说一下,当程序确实调用了新的Thread时,会发生意外情况,就像线程没有运行一样,即使处理了指令。

我尝试以不同的方式启动我的帖子:

  1. 实例化并启动线程作为本地变量

    void method()
    {
        new Thread(new Runnable(){...}).start();
    }
    
  2. 与1相同,但将其分配给在主进程

    上分配的对象
    Thread t;   //member of class own by main process
    void method()
    {
        t = new Thread(new Runnable(){...});
        t.start();
    }
    
  3. 使用executorservice作为委托人

    ExecutorserviceObject.execute(new Runnable(){...});
    
  4. 我宁愿在1)长时间跑步而不是2)和3)。

    我认为问题可能与垃圾收集器和/或线程调度程序有关。

    这怎么可能发生?谁能详细说明封面下发生了什么?

1 个答案:

答案 0 :(得分:0)

第一种情况和第二种情况非常相似。即使您没有将Thread对象分配给字段/变量,它仍然可以在线程完成(正常或异常)之前保持强可达性。将其存储到字段中使得线程的进一步控制更容易(例如,加入或发送中断),但这不是必需的。

因此,从问题中发布的代码来看,第一和第二种情况之间应该没有真正的区别。您的问题很可能出现在另一段代码中。