2011-04-03 71 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