Java ExecutorService的线程实现在一段时间后出现内存不足错误

Java ExecutorService的线程实现在一段时间后出现内存不足错误,java,multithreading,executorservice,Java,Multithreading,Executorservice,我正在使用ExecutorService为UDP套接字侦听器实现线程 ExecutorService service = Executors.newFixedThreadPool(10); if (listenerSet != null) { for (Listener listener : listenerSet.getListeners()) { ListenerThread listenerThread = new

我正在使用ExecutorService为UDP套接字侦听器实现线程

ExecutorService service = Executors.newFixedThreadPool(10);

        if (listenerSet != null) {
            for (Listener listener : listenerSet.getListeners()) {
                ListenerThread listenerThread = new ListenerThread();
                listenerThread.setListener(listener);
                service.submit(listenerThread);
            }

        }
         service.shutdown();
ListenerThread类是Runnable接口的一个实现。侦听器集最多可以有3个侦听器

ExecutorService service = Executors.newFixedThreadPool(10);

        if (listenerSet != null) {
            for (Listener listener : listenerSet.getListeners()) {
                ListenerThread listenerThread = new ListenerThread();
                listenerThread.setListener(listener);
                service.submit(listenerThread);
            }

        }
         service.shutdown();

这在一段时间内可以正常工作,之后会出现java.lang.OutOfMemoryError。有谁能告诉我我做错了什么。

好吧,你正在制造一大堆的线,有些地方。。。很少会出现OutofMemory错误。你有没有在inifinte循环或什么的代码?你可以发布侦听器线程的代码吗?如果您需要对线程池执行进行更多控制,您可以使用ThreadPoolExecutor,设置有界队列大小并添加RejectionHandler代码。在这其中,我使用的UDP scoket侦听器侦听某个端口,接收到的每个数据包在不同的线程中处理。