每个连接一个线程处理,关闭serversocket前,我想让serversocket不接受新的连接,
就是说在要关闭的时候,其他线程可能还没处理完

解决方案 »

  1.   

    ServerSocket ss=ServerSocket(2222);
    while(true){
        Socket s=ss.accept();
        }
    //这样不就行了..
      

  2.   

    那总要有个触发的机制啊,现在你怎么样去触发这个行为了,有了触发,就可以对行为做出判断,然后就可以处理了啊。可以设一个标识变量,线程里面处理结束后处理这个标识。然后对于ACCEPT,可以用这个变量的状态及你的触发(可能是另外一个变量)去判断是否要ACCEPT,这样应该就可以了吧
      

  3.   

    boolean flag = ture
    ServerSocket ss=ServerSocket(2222);
    while(flag){
        Socket s=ss.accept();
        if(flag) dosomething(s)
    }
    当收到结束信号的时候,flag=false;而且要立即中断accept的执行
    当所有连接s的事务处理完以后才关闭serversocke ss
    我的问题是如何做到:   当收到结束信号的时候,flag=false;而且立即中断accept的执行
      

  4.   

    可以考虑在ServerSocket的accept方法作控制:设置一个标志信息,true时执行accept操作,false时不执行accept操作。
      

  5.   

    to  fogs(菜鸟想飞) 是有个标志,但是我要如何中断正在执行的accept(),并且已经建立的连接不受影响
      

  6.   

    boolean flag = ture
    ServerSocket ss=ServerSocket(2222);
    while(flag){
        if(accept_flag){//accept_flag应该是类一级的属性变量,方便设值
           Socket s=ss.accept();
           if(flag) dosomething(s)
        }else{
          //等待结束
        }
        //休息XX毫秒
    }
      

  7.   

    这个我知道
    但是
    boolean flag = ture
    ServerSocket ss=ServerSocket(2222);
    while(flag){
        if(accept_flag){//accept_flag应该是类一级的属性变量,方便设值
           Socket s=ss.accept();
           if(flag) dosomething(s)
        }else{
          //等待结束
        }
        //休息XX毫秒
    }
    是在一个线程里头,我在另一个线程里头吧状态改了
    但是这时候这个线程正在执行accept()
    我的问题是要让这个accept立即返回,并抛出异常
      

  8.   

    1.想在accept的过程中中断操作,比较难。accept是sun去实现的,不知道提供事件通知机制了没有,当然楼主可以修改jdk代码来实现这个功能。2.实在不行,可以在accept之后再作一次accept_flag的判断,如果是false就不执行dosomething(s)。
      

  9.   

    2.实在不行,可以在accept之后再作一次accept_flag的判断,如果是false就不执行dosomething(s)。我开始也是这么做的,但是感觉不完美。我是个完美主义者,hohohoho~~~
      

  10.   

    用serversocket的close()可以立即让accept()返回
    但是会把serversocket关了
      

  11.   

    :)
    就算是事件通知,或者jdk提供什么方法,还不是一样的道理吗!都是中断正在执行的操作。如果从保险度来说,还是在自己的代码中作判断最安全、最可靠。
      

  12.   

    我试了一下,serversocket的close()不会关闭已经建立的连接
    hohoho
    收工