解決tomcat啓動Socket監聽端口死循環被hold問題

原文連接:http://blog.csdn.net/dead_cicle/article/details/7073433java


1.SOCKET監聽置於servlet的init方法中,在web.xml里加入<load-on-startup>1<load-on-startup>,隨TOMCAT啓動而啓動.web


2.在實際過程當中卻遇到了TOMCAT不能啓動的問題,Sokcet 監聽while(true)的循環hold住了tomcat的啓動!tomcat


3.開始想到使用Thread的yeild方法,未果。(也許是沒能正確引用。sleep是確定不行的,線程依然在hold着。)spa


4.上廁所回來又在網上一通好找,最後找到一個方法,Socket繼承Thread,啓動方法放到run,裏,而後在線程使用時,設置爲守護線程。實現目的是tomcat啓動完成後仍是可以一直運行:.net


轉載例子:
線程


StartThread.java

import java.io.IOException;
public class StartThread extends Thread {
   public void run() {
        try {
		Server server = new Server();
		server.service();//啓動開啓服務,監聽
	} catch (IOException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
    }
}

StartServer.java

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
public class StartServer extends HttpServlet {
	public void init() throws ServletException {
		Thread s = new StartThread();
		s.setDaemon(true);// 設置線程爲後臺線程,tomcat不會被hold,啓動後依然一直監聽。
		s.start();
	}
}
相關文章
相關標籤/搜索