我有一个带有按钮的 Swing 表单,当单击该按钮时开始SocketServer
监听单独线程中的传入请求。以下是我拥有的课程结构。
MainForm
:这是我的主要课程,它启动了 Swing Form。它有两个按钮,“启动服务器”和“停止按钮”。MySocketServer
:这个类是SocketServer
对象存在的地方,它有方法startServer()
和stopServer()
.
以下是开始按钮的点击事件正文。
t = new Thread(new Runnable() //Object t is created globally in this main class.
{
public void run()
{
myss = new MySocketServer(); //Object myss has similar accessibility as t.
myss.startServer();
}
});
t.start();
以下是停止按钮的点击事件主体
myss.stopServer();
if(t.isAlive());
System.out.println("Thread is still alive!!");
虽然我可以根据需要切换 SockeServer “开始”和“停止”,但我意识到每次启动服务器时,都会创建新线程并且即使使用MySocketServer
's 方法停止服务器,它仍然保持活动状态。
我可以使用stop()
和Thread
停止线程执行,但由于它已被贬值,而且我研究过线程在其run()
方法完全执行后就会结束,但我将startServer()
方法分开,以便它可以单独处理连接的客户端。
请注意,startServer()
有 While-Listen 循环,因此run()
线程方法本质上处于无限执行状态,直到我显式调用stopServer()
并停止循环。
在这里可以做什么?