我想做一个socket通信的服务端
在main函数中运行Thread.currentThread().join();可以让线程一直执行。但如果我想关闭这个程序该如何做?

解决方案 »

  1.   

    可以使用这个方法,public static void yield();暂停当前正在执行的线程对象,并执行其他线程。
      

  2.   

    现在是这样。
    我用Thread.currentThread().join();方法把main函数线程锁死了。我需要在子线程将锁死的线程解开。
    public static void yield();这个方法在什么地方执行呢?
      

  3.   

    yield只是暂时让出资源,所以估计无法满足你的需求。
    按理说join之后线程会等待对方线程结束后继续运行,你的子线程是否可以正常结束?
      

  4.   

    main线程里做个逻辑,做成能退出不就行了。
      

  5.   

    public static void main(String args[]){
        xxxx;
        while(true){
             if(xxx)
                 break;
        }
    }这种形式么?
      

  6.   

    public static void main(String args[]){
        xxxx;
        while(true){
             if(xxx)
                 break;
        }
    }这种形式么?可以的呀
      

  7.   

    可以在Thread.currentThread().join();之前启动一个子线程,
    在子线程里等待用户输入,有输入的情况,调用【主线程.interrupt()】方法中断主线程。
      

  8.   

    public static void main(String args[]){
        xxxx;
        while(true){
             if(xxx)
                 break;
        }
    }这种形式么?可以的呀
    太消耗CPU了
      

  9.   

    你可以做一个sleep,如果要求实时的话就只能靠消耗cpu了,
      

  10.   

    在其他线程里调用主线程.interrupt();主线程里会抛出出现一个异常,单独捕捉这个异常不管他执行之后的语句就行
      

  11.   

    线程关闭推荐用法使用Thread.interrupt();
    这个包括两种情况:
    一种是执行线程阻塞状态被中断将抛出异常InterruptedException,此时捕捉异常进行逻辑处理即可。阻塞方法包括sleep,阻塞队列等操作。
    第二种是执行线程非阻塞,该方法只会设置interrupt标志位。此时需要显示判断Thread.isInterrupted()进行逻辑处理。