美文网首页Java基础知识
Android中终止线程的办法

Android中终止线程的办法

作者: 正阳Android | 来源:发表于2018-01-26 18:42 被阅读96次

1.在以前的java版本里面,线程结束提供了stop方法;但是现在已经过时了,不再推荐使用此方法,也就是不再使用这个方法了。主要是因为thread.stop会立即将线程终止,导致代码逻辑不完整。譬如子线程休眠1s之后执行某操作,但是主线程在休眠了0.1s之后子线程就执行了stop方法。导致子线程里面的逻辑不完整。另外此线程持有的锁也会立即释放,导致其他线程可能会使用到不完整的数据。

那么如何停止线程呢?只有一种方法,那就是run方法结束。我们开启多线程执行,代码通常是使用循环结构,最多的就是while循环,所以只要控制住循环,就可以让run方法结束,也就是线程结束。

我们可以设置一个标记,当想要终止线程的时候标记置位即可。

另外一种方法就是借助thread的interrupt方法,这个方法可以让将线程中断标识位置位(中断标识位置为true),线程会不时地检查这个中断标识位,以判断线程标识位是否被置位。可以调用Thread.currentThread().isInterrupted()方法指导线程是否被置位。但是如果线程被阻塞,就无法判断线程中断状态,因为一个线程处于阻塞状态,线程在检测中断标识位时如果发现中断标识位为true,会在阻塞方法调用处抛出InterruptedException异常,并且在抛出异常之前将线程的中断标识位复位,即重新设置为false。所以如果捕获到InterruptedException异常,就需要我们做出相应的操作。

综上所述,一种方法是设置标记;另外一种方法可以使用thread的interrupt方法,同时为了避免阻塞引起的重新置位,可以使用try catch,捕获到了中断异常处,再次调用interrupted方法。当然更好的做法是不使用try捕获,而是抛出异常,让调用者捕获这个异常,做出相应的操作。

相关文章

  • Android中终止线程的办法

    1.在以前的java版本里面,线程结束提供了stop方法;但是现在已经过时了,不再推荐使用此方法,也就是不再使用这...

  • 线程终止

    通知终止 场景:在主线程中启动子线程,如何让主线程通知到子线程,从而让子线程终止

  • 多线程系列09-线程终止与线程中断

    线程终止:在Thread类中JDK给我们提供了一个终止线程的方法stop(); 该方法一经调用就会立即终止该线程,...

  • 一文搞懂 Java 线程中断

    在之前的一文《如何"优雅"地终止一个线程》中详细说明了 stop 终止线程的坏处及如何优雅地终止线程,那么还有别的...

  • 线程池(3)终止线程池原理

    终止线程池 一、终止线程池方法 1、 shutdown() 安全的终止线程池 2、 shutdownNow() 强...

  • 【多线程】——4.安全的终止线程

    安全的终止线程 线程正常执行结束,就会终止 除了正常结束外,还有什么方法终止? 设置线程终止标志 public c...

  • 多线程(三)

    线程终止 1.run方法正常退出,线程自然终止2.因为一个没有捕获的异常终止了run方法,线程意外终止 线程中断 ...

  • 子线程中使用Toast或者更新UI(转)

    Toast只能在主UI线程使用,使用下面的办法可以解决第一种,使用Looper,不过这种办法会终止,子线程之后的代...

  • 多线程之中断线程

    1、 java中没有可以强制线程终止的方法。但是存在interrupt方法用来请求终止线程。当对一个线程调用int...

  • Java多线程TwoPhaseTermination模式

    概述 线程进行正常处理时的状态为“操作中”。要停止该线程,我们会发出“终止请求”。这样,线程就不会突然终止,而是先...

网友评论

    本文标题:Android中终止线程的办法

    本文链接:https://www.haomeiwen.com/subject/wdtbaxtx.html