1. 1 package multithread4;
  2. 2 /*
  3. 3 * 停止线程:
  4. 4 * 1,stop方法。
  5. 5 *
  6. 6 * 2,run方法结束。
  7. 7 *
  8. 8 * 怎么控制线程的任务结束呢?
  9. 9 * 任务中都会有循环结构,只要控制住循环就可以结束任务,线程就结束
  10. 10 *
  11. 11 * 控制循环通常就用定义标记来完成。
  12. 12 *
  13. 13 * 但是如果线程处于冻结状态,无法读取标记。如何结束呢?
  14. 14 *
  15. 15 * 可以使用interrupt()方法将线程从冻结状态强制恢复到运行状态中来,让线程具备cpu执行资格
  16. 16 * 但是强制动作会发生InterruptedException,记得要处理
  17. 17 */
  18. 18
  19. 19
  20. 20
  21. 21 class StopThread implements Runnable{
  22. 22 private boolean flag = true;
  23. 23 public synchronized void run() {
  24. 24 while(flag) {
  25. 25 try {
  26. 26 wait();//t0 t1进来都等待了读取不了标记,结束不了任务
  27. 27 } catch (InterruptedException e) {
  28. 28 System.out.println(Thread.currentThread().getName()+"......."+e);
  29. 29 flag = false;
  30. 30 }
  31. 31 System.out.println(Thread.currentThread().getName()+".....");
  32. 32 }
  33. 33 }
  34. 34 public void setFlag() {
  35. 35 flag = false;
  36. 36 }
  37. 37 }
  38. 38 public class StopThreadDemo {
  39. 39
  40. 40 public static void main(String[] args) {
  41. 41 // TODO Auto-generated method stub
  42. 42 StopThread st = new StopThread();
  43. 43
  44. 44 Thread t1 = new Thread(st);
  45. 45 Thread t2 = new Thread(st);
  46. 46
  47. 47 t1.start();
  48. 48 t2.start();
  49. 49
  50. 50 int num = 1;
  51. 51 for (; ; ) {
  52. 52 if (++num == 50) {
  53. 53 // st.setFlag();
  54. 54 t1.interrupt();
  55. 55 t2.interrupt();
  56. 56 break;
  57. 57 }
  58. 58 System.out.println("main...."+num);
  59. 59 }
  60. 60 System.out.println("over");
  61. 61 }
  62. 62
  63. 63 }

StopThreadDemo

多线程-停止线程方式-Interrupt的更多相关文章

  1. [19/04/05-星期五] 多线程_Thread(线程、线条)、基本术语

    一.基本概念 多线程是Java语言的重要特性,大量应用于网络编程.服务器端程序的开发,最常见的UI界面底层原理.操作系统底层原理都大量使用了多线程. 我们可以流畅的点击软件或者游戏中的各种按钮,其实, ...

  2. java线程之停止线程

         在Java中有以下3种方法可以终止一个正在运行的线程:      1.使用退出标志,是线程正常退出,也就是run方法完成后线程终止.      2.使用stop方法强制终止线程,但不推荐使用 ...

  3. Java-将多线程停止的两种方法

    线程如何停止呢 stop方法过时了,看起描述发现,有其他解决方案. 线程结束:就是让线程任务代码执行完,run方法结束. run方法怎么结束呢? run方法中通常都定义循环,只要控制住循环就哦了. / ...

  4. Java 学习笔记之 Return停止线程

    Return停止线程: 使用interrupt()和return结合也可以实现停止线程的效果.不过还是建议使用“抛异常“的方法,因为在catch块中可以将异常向上抛,使线程停止的事件得以传播. pub ...

  5. java 多线程 线程组ThreadGroup;多线程的异常处理。interrupt批量停止组内线程;线程组异常处理

    1,线程组定义: 线程组存在的意义,首要原因是安全.java默认创建的线程都是属于系统线程组,而同一个线程组的线程是可以相互修改对方的数据的.但如果在不同的线程组中,那么就不能"跨线程组&q ...

  6. Java多线程(九)—— interrupt()和线程终止方式

    一.interrupt() 说明 interrupt()的作用是中断本线程.本线程中断自己是被允许的:其它线程调用本线程的interrupt()方法时,会通过checkAccess()检查权限.这有可 ...

  7. Java多线程(五)停止线程 interrupt

    调用interrupt方法仅仅是在当前线程中打了一个停止的标记,并不是真正停止线程. this.interrupted() :测试当前线程是否已经中断,执行后具有将状态标志清除为false的功能 is ...

  8. java多线程之停止线程

    /*1.让各个对象或类相互灵活交流2.两个线程都冻结了,就不能唤醒了,因为根据代码要一个线程活着才能执行唤醒操作,就像玩木游戏3.中断状态就是冻结状态4.当主线程退出的时候,里面的两个线程都处于冻结状 ...

  9. -1-5 java 多线程 概念 进程 线程区别联系 java创建线程方式 线程组 线程池概念 线程安全 同步 同步代码块 Lock锁 sleep()和wait()方法的区别 为什么wait(),notify(),notifyAll()等方法都定义在Object类中

     本文关键词: java 多线程 概念 进程 线程区别联系 java创建线程方式 线程组 线程池概念 线程安全 同步 同步代码块 Lock锁  sleep()和wait()方法的区别 为什么wait( ...

随机推荐

  1. Spring Boot定时任务配置

    import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.a ...

  2. ubuntu下载源码clang + llvm+lldb 编译+安装

    [本文可能涉及到Ubuntu安装以下工具:] A.g++ B.gcc C.make D.cmake E.clang(10.0.1)(必须) F.llvm(10.0.1)(必须) G.lldb(10.0 ...

  3. 【LeetCode】127. Word Ladder 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 题目地址: https://leetcode.com/problems/word-lad ...

  4. vue 设置请求超时时间处理

    Vue.http.post('http://114.214.164.77:2222/crptorgraphy',{msg:JSON.stringify(req)},{emulateJSON:true, ...

  5. Java中常见的转义字符

    转移字符对应的英文是escape character  , 转义字符串(Escape Sequence)字母前面加上捺斜线"\"来表示常见的那些不能显示的ASCII字符.称为转义字 ...

  6. 编写Java程序,在子类老虎中重写父类动物的吃食方法

    返回本章节 返回作业目录 需求说明: 在子类老虎中重写父类动物的吃食方法 实现思路: 在子类老虎中重写父类动物的吃食方法的实现思路如下: 创建各种动物的父类Animal类,在该类中定义eat()方法. ...

  7. MobaXterm远程连接Linux图形用户界面

    目标: 在自己的Windows桌面打开运行在Linux上的firefox浏览器, 使用MobaXterm终端工具在命令行直接打开图像化界面. 工具: Windows: MobaXterm Linux: ...

  8. Ubuntu18.04编译Fuchsia

    编译环境 系统:Ubuntu 18.04.1 LTS 64-bit 内存:8 GiB CPU:Intel Core i5-4200M CPU @ 2.50GHz × 4 1.安装编译环境 sudo a ...

  9. 初识python: 字符编码转换

    指定当前文件编码格式:#-*- coding:utf-8 -*-unicode(万国码): 英文字母 1个字节,中文3个字节python中所有的字符都是unicode编码所有非unicode编码互转都 ...

  10. RabbitMQ --- 直连交换机 【 同步操作,等到消费者处理完后返回处理结果 】

    1.前言 RabbleMQ这种消息中间件,主要的功能是使用异步操作,来达到解耦的目的,比如,有系统a和系统b, 系统a通过消息中间件通知系统b来做业务,那么系统a只需要把要做的事情[也就是消息]发给消 ...