(1): Java 프로그램을 다시 시작하면 프로세스가 시작됩니다.
운영 체제 명령줄에서 runtime.getruntime (). exec ("Java-classpath.xxx") 를 시작할 수 있습니다
(2): 메시지를 받는 모듈의 addtolist 함수에 특수 핸들러를 추가할 수 있습니까? 함수가 실행될 때 먼저 list 에 메시지를 추가한 다음 현재 처리 스레드가 있는지 여부를 감지하고 그렇지 않은 경우 스레드를 시작합니다.
(3): 약간의 작업을 절약하기 위해 list 대신 BlockingQueue 를 사용할 수 있습니다. 이렇게 하면 스레드가 대기 및 깨우기 위해 코드를 쓰지 않고 구현됩니다. list 를 사용해야 하는 경우
list 를 동기화하는 작은 예가 있습니다.
Java ca YourMessageType> 목록; Private boolean running = true; Public MessageConsumer(List< YourMessageType> List) {this.list = list; } public voidrun () {while (running) {yourmessagetype msg = null; Try {synchronized (list) {while (list.size () = = ) {list.wait (); } msg = list.remove(); List.notiryAll (); }} catch (exception e) {e.print stacktrace (); } if (msg == null) continue; //System.out.println(msg); //print message} }}// sampleclass ShareModule {List< 호출 YourMessageType> List = new ArrayList< YourMessageType> (); ...} public classmain {public static void main (string [] args) {sharemudule sm; //so on ... thread t = new message consumer (sm.list); T.start (); ...}}