相关疑难解决方法(0)

Java停止服务器线程

以下代码是我的应用程序中的服务器代码:

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: …
Run Code Online (Sandbox Code Playgroud)

java multithreading

8
推荐指数
2
解决办法
1万
查看次数

具有套接字I/O阻塞操作的中断/停止线程

在我的服务器应用程序的某些时候,我想停止一些执行I/O阻塞操作的线程.

例如,其中一个有以下run()方法:

public void run() {
    System.out.println("GWsocket thread running");

    int len;
    byte [] buffer = new byte[1500];
    try {
        this.in  = new DataInputStream(this.socket.getInputStream());
        this.out = new DataOutputStream(this.socket.getOutputStream());
        running = true;

        while (running){
            len = in.read (buffer);
            if (len < 0)
                running = false;
            else
                parsepacket (buffer, len);
        }

    }catch (IOException ex) {
        System.out.println("GWsocket catch IOException: "+ex);
    }finally{
        try {
            System.out.println("Closing GWsocket");
            fireSocketClosure();
            in.close();
            out.close();
            socket.close();
        }catch (IOException ex) {
            System.out.println("GWsocket finally IOException: "+ex);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我想停止运行此代码的线程,我该怎么办?

这里 …

java sockets multithreading

5
推荐指数
2
解决办法
9935
查看次数

如何在另一个类中杀死一个类的实例?

我正在创建一个客户端 - 服务器应用程序,用户可以从gui打开或关闭服务器; 为了让它工作,我使用SwingWorker嵌套类.所有似乎都正常工作,但当我关闭服务器并重新打开它不起作用,可能是因为还有另一个打开的实例无法覆盖:服务器在accept()上被阻止方法.当用户按下开关按钮时,我想杀死前一个实例,但我不知道如何.

这是给我带来问题的SwingWorker类:

class SwingWorkGUI extends SwingWorker
    {
        @Override
        protected Integer doInBackground() throws Exception {
            int delay = 1000; 
            final Timer time = new Timer(delay, null);
            time.addActionListener( new java.awt.event.ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    if (Server.up == true){
                        upTimeMillis += 1000;
                        long diff = upTimeMillis/1000;
                        long numHrs = diff/60;
                        diff = diff%60;
                        long numMins = diff/60;
                        long numSecs = diff%60;
                        upTime.setText(numHrs + ":" + numMins + ":" + numSecs);
                    }
                    else {
                        upTime.setText("Server Actually Down");
                        time.stop(); …
Run Code Online (Sandbox Code Playgroud)

java kill instance

5
推荐指数
1
解决办法
1453
查看次数

中断接受()

是否存在OS便携式中断阻塞的方法accept?我有一个多线程守护进程/服务,当deamon/service获得关闭信号时,需要正常关闭所有侦听网络主机.我看到有人说你应该使用非阻塞套接字或选择超时 - 但这些会不会降低性能,因为我的应用程序应尽可能快?守护进程在主线程中运行,而每个侦听网络主机都在自己的线程中运行.现在的问题是,accept如果侦听网络主机的套接字上没有网络流量,则无限期地等待.如果我应该使用信号,那么有一个使用信号中断的例子accept吗?

c c++ sockets networking winsock

3
推荐指数
1
解决办法
2825
查看次数

标签 统计

java ×3

multithreading ×2

sockets ×2

c ×1

c++ ×1

instance ×1

kill ×1

networking ×1

winsock ×1