挂在循环中的主线程

时间:2015-09-12 16:28:35

标签: java multithreading thread-safety

我在一个"池线程中使用同步"和主线程。在池线程中我使用synchronization(locker)锁定部分,然后执行:

synchronization(locker){
   QueuePool.shutdownNow();
   while(!QueuePool.isShutDown()){}
   //do something after

    QueuePool.SetThreadQueue(null);

    QueuePool queue = QueuePool.GetThreadQueue();

    Pallets pallets = Pallets.GetPallets(context);

    ////////////////////////////////////////////////////////////////////////////////////
    for (String key : pallets.getPalletsToSend().keySet()) {
        for (HashMap<String, String> object : pallets.getPalletsToSend().get(key)) {
            PalletSender sender = new PalletSender(object, context);
            queue.addTask(sender);
        }
    }
}

并且在主线程上,此同步是在按钮单击时:

synchronized (QueuePool.locker2){QueuePool.GetThreadQueue().addTask(palletSender);}

QueuePool是一个拥有ThreadPoolExecution的单例。在SetThreadQqueue中,我清除null上的单例实例。

池线程每2分钟运行一次。它可能首先进入池线程。那么等待while(!QueuePool(isShutDown())需要多长时间?也许我可以添加一些代码来在该循环中添加一个条件?我不确定我是否正确。让我知道什么是最好的。

0 个答案:

没有答案