停止java服务器,Java停止服务器线程

the following code is server code in my app:

private int serverPort;

private Thread serverThread = null;

public void networkListen(int port){

serverPort = port;

if (serverThread == null){

Runnable serverRunnable = new ServerRunnable();

serverThread = new Thread(serverRunnable);

serverThread.start();

} else {

}

}

public class ServerRunnable implements Runnable {

public void run(){

try {

//networkConnected = false;

//netMessage = "Listening for Connection";

//networkMessage = new NetworkMessage(networkConnected, netMessage);

//setChanged();

//notifyObservers(networkMessage);

ServerSocket serverSocket = new ServerSocket(serverPort, backlog);

commSocket = serverSocket.accept();

serverSocket.close();

serverSocket = null;

//networkConnected = true;

//netMessage = "Connected: " + commSocket.getInetAddress().getHostAddress() + ":" +

//commSocket.getPort();

//networkMessage = new NetworkMessage(networkConnected, netMessage);

//setChanged();

//notifyObservers(networkMessage);

} catch (IOException e){

//networkConnected = false;

//netMessage = "ServerRunnable Network Unavailable";

//System.out.println(e.getMessage());

//networkMessage = new NetworkMessage(networkConnected, netMessage);

//setChanged();

//notifyObservers(networkMessage);

}

}

}

The code sort of works i.e. if im attempting a straight connection both ends communicate and update.

The issue is while im listening for a connection if i want to quit listening then the server thread continues running and causes problems.

i know i should not use .stop() on a thread so i was wondering what the solution would look like with this in mind?

EDIT: commented out unneeded code.

解决方案

Close the server socket from an external thread. As per the documentation on Serversocket.close() the blocking accept will throw a SocketException and you can shutdown your thread.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值