Java主线程结束,子线程继续执行

      今天解决将我们平台作为网关进行应用开发的某一项目的问题:只要启动服务端程序,CPU使用率就一直处于50%以上。服务端主要是通过线程调用TCPIP的服务,进行监听和请求处理。仔细查看代码,发现是由于服务端类的main方法中,启动线程就一直执行while死循环导致的。如此设计的初衷是为了让服务器端一直有线程活动,可以监听客户端的请求。把服务端的这段while循环屏蔽掉,测试也能一直监听客户端请求。

      原因:

            使用main方法作为程序入口时,其实是启动了一个进程。所以即使主线程(main方法创建的线程)只执行一次,只要其子线程未执行结束,就会一直处于运行状态。由于TCPIP本身已经使用循环线程进行监听,所以main方法就会一直运行着。而不必在主线程处再添加while循环,增加CPU的消耗。

你可能感兴趣的:(java,应用服务器,活动)