目录

一、线程终止

基本说明

应用案例

二、线程中断

三、线程插队

应用案例

线程常用方法


一、线程终止

  • 基本说明

  1. 当线程完成任务后,会自动退出
  2. 还可以通过使用变量来控制run方法退出的方式停止线程,即通知方式
  • 应用案例

public class ThreadExit_ {public static void main(String[] args) throws InterruptedException {T t1 = new T();t1.start();//如果希望main线程去控制t1线程得终止,必须修改loop//让t1退出run方法,从而终止t1线程//让主线程休眠5秒,再通知t1线程终止Thread.sleep(5*1000);t1.setLoop(false);}
}class T extends Thread {private int count = 0;//设置一个控制变量private boolean loop = true;@Overridepublic void run() {while(loop) {try {Thread.sleep(50);} catch (InterruptedException e) {e.printStackTrace();}System.out.println("线程"+Thread.currentThread().getName()+(++count ));}}public void setLoop(boolean loop) {this.loop = loop;}
}

运行结果:

执行5秒后通知子线程退出

二、线程中断

主要运用到yield()方法

三、线程插队

应用案例

package interrupt_;
//main线程创建一个子线程,每隔一秒输出hello,输出5次,主线程每隔一秒,输出hi,输出5次
//要求:两个线程同时执行,当主线程输出2次后,就让子线程运行完毕,主线程再继续
public class ThreaadMethod02 {public static void main(String[] args) throws InterruptedException {T2 t2 = new T2();t2.start();for (int i = 1;i<=5;i++) {Thread.sleep(1000);System.out.println("主线程吃了" + i + "个包子");if(i == 2){t2.join();//子线程插队,子线程执行完毕后主线程继续执行}}}
}class T2 extends Thread {@Overridepublic void run() {for(int i = 1;i<=5;i++){try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}System.out.println("子线程吃了" + i + "个包子");}}
}

运行结果

线程常用方法

1.setName            设置线程名称,使之与参数 name 相同
2.getName            返回该线程的名称
3.start                   使该线程开始执行;Java 虚拟机底层调用该线程的 start0 方法
4.run                     调用线程对象run方法;
5.setPriority         更改线程的优先级
6.getPriority         获取线程的优先级
7.sleep                  在指定的毫秒数内让当前正在执行的线程休眠(暂停执行)    
8.interrupt            中断线 程

9.yield                   线程的礼让。让出cpu,让其他线程执行,但礼让的时间不确定,

                              所以也不一定礼让成功

10.join                      线程的插队。插队的线程一旦插队成功,则肯定先执行完插入的线程所有的                                     任务

注意事项和细节

1.start底层会创建新的线程,调用run,run就是一个简单的方法调用,不会启动新的线程

2.线程优先级的范围

3.interrupt,中断线程,但并没有真正的结束线程。所以一般用于中断正在休眠的线程

4.sleep:线程的静态方法,使当前的 线程休眠

JAVA——多线程【线程终止、中断、插队】相关推荐

  1. java多线程-线程的停止【interrupt】

    java多线程-线程的停止 文章目录 java多线程-线程的停止 线程停止的原理 如何正确停止线程 在普通情况下停止线程 代码展示 在阻塞情况下停止线程 代码展示 线程在每次迭代后都阻塞 代码展示 停 ...

  2. Java多线程——线程的优先级和生命周期

    Java多线程--线程的优先级和生命周期 摘要:本文主要介绍了线程的优先级以及线程有哪些生命周期. 部分内容来自以下博客: https://www.cnblogs.com/sunddenly/p/41 ...

  3. java多线程 线程安全_Java中的线程安全

    java多线程 线程安全 Thread Safety in Java is a very important topic. Java provides multi-threaded environme ...

  4. Java 多线程线程安全(面试概念解答二)

    Java 多线程线程安全 什么是线程安全? 为什么有线程安全问题? 线程安全解决办法? 同步代码块 同步函数 静态同步函数 多线程死锁 多线程的三大特性 原子性 可见性 有序性 Java内存模型 Vo ...

  5. JAVA --- 多线程 -- 线程的创建

    JAVA - 多线程 – 线程的创建 线程的概念: 说起线程,先说程序和进程,多任务的概念. 程序(program):是指令和数据的有序集合,本身没有任何运行的含义,是一个静态的概念. 进程(proc ...

  6. Java多线程-线程的创建(Thread类的基本使用)

    文章目录 一. 线程和Thread类 1. 线程和Thread类 1.1 Thread类的构造方法 1.2 启用线程的相关方法 2. 创建第一个Java多线程程序 3. 使用Runnable对象创建线 ...

  7. JAVA多线程:线程创建过程以及生命周期总结

    1)如果所有的前台线程死亡,那么后台线程也会自动死亡. 2)一旦线程A调用了线程B的join()方法,那么线程B将会启动执行.此时,线程A会等待线程B执行完成后再继续执行. 应用场景: 可以将大任务分 ...

  8. Java多线程-线程的同步与锁

    一.同步问题提出 线程的同步是为了防止多个线程访问一个数据对象时,对数据造成的破坏. 例如:两个线程ThreadA.ThreadB都操作同一个对象Foo对象,并修改Foo对象上的数据. package ...

  9. Java多线程-线程中止

    不正确的线程中止-Stop Stop:中止线程,并且清除监控器锁的信息,但是可能导致 线程安全问题,JDK不建议用. Destroy: JDK未实现该方法. /*** @author simon*/ ...

  10. Java多线程 ——线程基础和锁锁锁

    Java多线程(一) 一.线程的定义 二.Synchronize线程同步 三.偏向锁.自旋锁.重量级锁 四.volatile关键字 4.1.普通变量运算的物理意义 4.2.有无解决的方案 4.3.vo ...

最新文章

  1. JAVA——获取classpath文件路径空格转变成了转义字符(%20)的问题解决方案
  2. php array 如何访问,php – 如何访问$array [@key]值
  3. java fix_Java中的低延迟FIX引擎
  4. 零基础带你学习MySQL—自连接(二十一)
  5. 元素增删事件DOMNodeInserted和DOMNodeRemoved
  6. C#类的定义与对象使用
  7. python学习_Python学习 基础篇完结
  8. matlab绘制均匀b样条曲线,MATLAB绘制B样条曲线
  9. windows打包ios app
  10. [转]Flixel只能用于Flex吗?
  11. 关于 Photoshop 的在线使用
  12. 微信扫码登录自定义二维码样式
  13. db2 删除索引_史上最牛分析MySQL索引机制的实现!不接受反驳!
  14. 拉斯姆森羽毛球教学视频11-27(文字版配图)
  15. 微信小程序基于百度云实现图文识别(胎教级教程)
  16. ruby入门算法: 输出一个 宽度为m , 高度为n 的图形。
  17. Wormhole漏洞分析
  18. MIT Technology Review 2020年“十大突破性技术”解读 【中国科学基金】2020年第3期发布...
  19. 2-3 CAD基础 删除(erase)
  20. mysql fulltext match_使用Mysql全文搜索Full-Text(fulltext和match...against)_MySQL

热门文章

  1. DCDC知识总结整理
  2. 湖北计算机自考学校都有哪些,湖北省自考本科有哪些学校?
  3. 找对象必须问的几个问题
  4. 第32节-事件-情形-动作(Events-Cases-Actions) | 剑雨Axure RP9系列【基础】
  5. 在VUE中使用Lottie动画
  6. h5设计师 赚钱_作为设计师赚钱的10种方法
  7. win2003上不能与iphone同步问题解决
  8. 深入理解CSS之flex精要之 flex-basis flex-grow flex-shrink 实战讲解
  9. 青蛙与蚊子(C++结构体练习题)
  10. 蓝牙连接后谷歌浏览器没有声音