(1):重新啟動壹個java程序就啟動了壹個進程
可以用操作系統命令行啟動 Runtime.getRuntime().exec("java -classpath . XXX");
(2):可不可以在接收消息的模塊中的addtolist函數中添加壹個專門的處理函數,函數執行時先向list中添加消息,然後探測當前有沒有處理線程,如果沒有,則啟動線程。
(3):想省點工作,可以用BlockingQueue來代替list,這樣線程等待和喚醒不用寫代碼實現了,如果非要用list,那麽就做好同步
list的小例子:
Java codeclass MessageConsumer extends Thead { private List<YourMessageType> list; private boolean running = true; public MessageConsumer(List<YourMessageType> list) {this.list = list;} public void run() { while (running) { YourMessageType msg = null; try { synchronized(list) { while (list.size() == 0) { list.wait(); } msg = list.remove(0); list.notiryAll(); } } catch (Exception e) { e.printStackTrace(); } if (msg == null) continue; //System.out.println(msg); //print message } }}//調用sampleclass ShareModule { List<YourMessageType> list = new ArrayList<YourMessageType>(); ...}public class Main { public static void main(String[] args) { ShareMudule sm; //so on ... Thread t = new MessageConsumer(sm.list); t.start(); ... }}