Java - 在EventListener中创建线程

时间:2013-02-06 19:51:30

标签: java multithreading jvm runtime

我收到了这段代码:

Thread thread = new Thread(new Runnable() {
                    @Override
                    public void run() {
                        OctopusWSClient.sendPoolSensorReading(poolSensorReading, OctopusClientStart.currentMacAddress);
                    }
                });
                thread.setName("Thread - WS");
                thread.start();

在一个大约每30秒执行一次的事件监听器内(当事件发生时),每隔30秒创建一个新的线程,通常持续20秒完成,现在,我的问题是......它可以以这种方式调用线程?如果没有,如何??? ...而且,我正在使用此代码观看线程ID和名称:

Set<Thread> threadSet = Thread.getAllStackTraces().keySet();
                for(Thread t : threadSet){
                    System.out.println(" Thread #"+t.getId()+" Name: "+t.getName());
                }

并打印当前线程的ID和名称,我总是看到相同数量的线程,但ID总是递增1(线程 - WS)。

这是一个不好的信号吗?它会在一段时间内填满JVM内存吗?

感谢

1 个答案:

答案 0 :(得分:4)

您可能会发现通知单个线程恢复更好,而不是创建多个线程。如果完成需要20秒,最后将其锁定并使其等待,直到它从事件侦听器获得重新启动循环的命令。