我正在从网上编写代码来创建一个聊天应用程序。在对我的程序进行故障排除以找出它为什么不工作之后,我发现我的运行方法中的代码没有被访问。这是代码片段
public void listen()
{
listen = new Thread("Listen") {
public void run()
{
writeMessage("Working in here");
while (true) {
String message = client.receive();
if (message.startsWith("/c/")) {
client.setID(Integer.parseInt(message.substring(3, message.length())));
writeMessage("Successfully connected to server" + client.getID());
}
}
}
};
}
它正在到达 listen 方法本身,因为如果我在声明线程之前使用 write message 命令,它会为我打印出消息,看看这个为什么它不会再进入的任何想法?
谢谢
最佳答案
在您的Thread
上调用start()
即可:
public void listen()
{
listen = new Thread("Listen") {
public void run()
{
writeMessage("Working in here");
while (true) {
String message = client.receive();
if (message.startsWith("/c/")) {
client.setID(Integer.parseInt(message.substring(3, message.length())));
writeMessage("Successfully connected to server" + client.getID());
}
}
}
};
listen.start(); // <-- Add this line
}
此外,您通常不想扩展 Thread
(您在这里使用的是匿名类)。通常你会想要创建一个 Runnable
并将其传递给 Thread
的构造函数:
Runnable r = new Runnable() {
@Override
public void run()
{
// Do some work here
}
};
Thread listen = new Thread(r, "Listen");
listen.start();
或者更好的是,使用 Executor
,创建您自己的 Thread
对象的理由不多。
关于java - 不进入线程方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36044006/