Java 多线程之线程监控

在程序开发中我们经常会使用到很多线程去做不同的业务,我们怎么能方便的管理这些线程呢?是否我们希望我们创建的线程能够一直运行下去,知道程序退出?在这里我们使用一个监控线程的概念。

我们可以定义一个线程继承自Thread类,在其中定义一个Map集合,用于存放我们需要管理的线程;当我们需要对某个线程进行操作时,我们就可以根据他的key值获取到;
private HashMap<String, Thread> threads2Watch = new HashMap<String, Thread>();

在run方法中,我们写一个循环,让此线程一直运行下去,并利用sleep方法,让其停顿一段时间;

while (true) {
            try {
                sleep(1 * 60 * 1000);
            } catch (InterruptedException e) {
                DebugLog.logger.error("Exception!!", e);
                continue;
            }
        }

注意这里的catch中加入了一个continue;即使此次sleep发生了异常,while循环仍然可以运行下去;不会对整个线程造成影响;

在while()循环中,我们就可以写自己管理线程的业务方法了,比如遍历整个map集合,获取当前线程的转态,如果线程已经结束,我们就从新开启一个这样的线程,并把它加入map集合中;

通过以上的这种做法,我们可以让我们自己程序中想要一直运行的线程一直运行下去,这种线程尤其适合在频繁监听某一网络端口,网络状态,某些值的变化是很重要的;

通过这种思想,我们可以根据自己需要扩展自己的功能;

你可能感兴趣的:(-----Java,程序设计-----)