我找到了一个练习(它不是家庭作业或其他任何东西,不用担心):评论以下代码。问题是,我不知道这段代码的作用。到目前为止我发表了我的评论。这是对的吗?
public class A {
private ServerSocket a;
// constructor
public A (int p) {
a = new ServerSocket(p); // create a server socket on port p.
while(true) { // infinite loop
Socket c = a.accept(); // accept the connection from the client.
Thread th = new Thread(new B(c)); // huh... wtf ? Is that a thread declaration with the
//runnable interface ?
//I have no idea. c socket is copied
// in B class field by B constructor.
}
}
public class B implements Runnable {
private Socket a;
// constructor
public B(Socket aa) {
a = aa; // copying a socket.
}
public void run() { // overide run methode from runnable ? I don't remember, there is a thing with run...
/// Question from the exercice : what should i put here ?
}
}
答案 0 :(得分:1)
假设您已经知道线程是什么。代码侦听while循环内部的连接。然后接受连接并创建一个实例为B
的新线程。然后线程将调用此对象的run
方法(B对象)
回答练习的问题:你可以在run方法中放置一个发送或接收逻辑。
注意:您需要致电
th.start();
新创建的线程对象 为了使线程执行run方法。
此外,套接字不会复制到B对象,但会传递引用。因此,两个变量都保持相同的对象。