当前位置: 代码迷 >> Android >> Thread对象异常提示:Thread already started.明明停止了,为什么还在运行?
  详细解决方案

Thread对象异常提示:Thread already started.明明停止了,为什么还在运行?

热度:201   发布时间:2016-04-28 03:18:44.0
Thread对象错误提示:Thread already started.???明明停止了,为什么还在运行??
本帖最后由 sno_guo 于 2014-08-19 11:51:28 编辑
大家好,我在一个按钮的onclick事件中这样写:
isStop=false;
 mReaderThread.start();
 try {
mReaderThread.join();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Log.i(TAG,"RCV------------------read end"); 



线程的主函数 是这样的:

   mReaderThread = new Thread() {
                 private byte[] mBuffer = new byte[4096];
                 private int cnt=0;
                 @Override
                 public void run() {
                     try {
                         while(isStop==false) {
                             int read = mThreadFileIn.read(mBuffer);
                             if (read >0) 
                             {
          String str=new String(mBuffer, 0, read);
          Log.i("sno","RCV:"+str); 
          mRcvString+=str;
          isStop=true;   ////<-------------这里标志退出
             }
                         }
                      Log.i(TAG,"thread------is End"); 
                     } catch (IOException e) {
                     }
                 }
             };


我的操作是: 当我第一次点击按钮, 可以start 一个线程, 然后我看打印信息也提示, 退出了runnable,用join也判断运行完毕, 但当我第二次点击按钮, 却出错,提示说:java.lang.IllegalThreadStateException: Thread already started.

请问下为什么, 明明用join等待运行完成, 为什么还提示说 已经start。 我如何停止呢, 我调用stop方法,也不行。

 谢谢?
------解决思路----------------------
引用:
大家好,我在一个按钮的onclick事件中这样写:
isStop=false;
 mReaderThread.start();
 try {
mReaderThread.join();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Log.i(TAG,"RCV------------------read end"); 



线程的主函数 是这样的:

   mReaderThread = new Thread() {
                 private byte[] mBuffer = new byte[4096];
                 private int cnt=0;
                 @Override
                 public void run() {
                     try {
                         while(isStop==false) {
                             int read = mThreadFileIn.read(mBuffer);
                             if (read >0) 
                             {
          String str=new String(mBuffer, 0, read);
          Log.i("sno","RCV:"+str); 
          mRcvString+=str;
          isStop=true;   ////<-------------这里标志退出
             }
                         }
                      Log.i(TAG,"thread------is End"); 
                     } catch (IOException e) {
                     }
                 }
             };


我的操作是: 当我第一次点击按钮, 可以start 一个线程, 然后我看打印信息也提示, 退出了runnable,用join也判断运行完毕, 但当我第二次点击按钮, 却出错,提示说:java.lang.IllegalThreadStateException: Thread already started.

请问下为什么, 明明用join等待运行完成, 为什么还提示说 已经start。 我如何停止呢, 我调用stop方法,也不行。

 谢谢?
我也不会,帮你顶一下吧!
  相关解决方案