2011-04-03 46 views
0

我正在從頭開始在Java中進行簡單的telnet實現。 我已經在客戶端和服務器端工作之間做了一個簡單的套接字連接。我的問題是整個服務器應用程序在等待連接時凍結 - 即使我在單獨的線程中運行它。有沒有(最好)簡單的方法來解決這個問題?Java程序凍結,直到套接字連接

主題首發片段:

worker slave = new worker(); 
    Thread slaveThread = new Thread(slave); 
    slaveThread.run(); 

主題片段:

公共類工人實現Runnable {

public void run() 
{ 
    try 
    { 
     ServerSocket srv = new ServerSocket(1337); 
     System.out.println("Thread is running!"); 

     Socket clientSocket = srv.accept(); 
     System.out.println("Connection made."); 
    }catch (IOException e){ 
     System.out.println("Failed."); 

    } 

提前感謝!

Java的新手

+4

但是你是否正確運行單獨的線程?你的問題不建議。儘管沒有代碼,我們所能做的只是猜測。 – 2011-04-03 20:31:15

+2

讓我猜,你'通過調用'run()'啓動線程'? – Ishtar 2011-04-03 20:35:08

+1

@Ishtar,我在想同樣的事情。 – 2011-04-03 20:36:22

回答

2

是的,我啓動線程調用用run()的

雖然線程實現Runnable,你不應該叫run()。您應該致電Thread.start(),在新線程中調用run()。如果您直接撥打run()當前線程是執行它的線程,而不是您創建的線程。

+0

我應該在run()或「main」文件之前將Thread.Start()放入線程本身嗎? (我有兩個獨立的文件,主要和工作者),或者我應該使用它作爲「SlaveThread.start();而不是SlaveThread.run();? – 2011-04-03 20:45:37

+0

@Java Newbie,調用'線程'不要在'run()'內調用它,也就是'slaveThread.start()'而不是'slaveThread.run()'。 – 2011-04-03 20:47:14

+0

這個工作非常好,謝謝Mike,我會批准你的回答。 )。 – 2011-04-03 20:49:15