写点什么

【线程】(1),java 高级特性编程及实战 pdf 百度云

用户头像
极客good
关注
发布于: 刚刚

2.如何区分 run 方法和 start 方法


2.1 打印线程的名称



2.2 我们可以借助 jconsole 工具来查看在调用 run 方法和 start 方法的时候有没有创建新新线程,在这里就不演示了,感兴趣的可以下来看看


注意:当有两个线程的时候,如果 t1 的 start 在前,t2 的 start 在后,但是当程序启动时,到底是 t1 对应的线程先执行,还是 t2 对应的线程先执行,这个事情不能确定。start 的先后顺序,只能代表”创建线程“的先后顺序,操作系统先调度哪个线程上 CPU,这个事情时不能确定的


中断一个线程


========================================================================


例如:李四一旦进到工作状态,他就会按照行动指南上的步骤去进行工作,不完成是不会结束的。但有时我们需要增加一些机制,例如老板突然来电话了,说转账的对方是个骗子,需要赶紧停止转账,那张三该如何通知李四停止呢?这就涉及到我们的停止线程的方式了。


目前常见的有以下两种方式:


  1. 通过共享的标记来进行沟通

  2. 调用 interrupt() 方法来通知


方法一:通过定义一个标识符来控制线程的终止


public class ThreadDemo5 {


//定义一个标识符,通过控制标识符来控制线程的终止


private static boolean flag = false;


public static void main(String[] args) throws InterruptedException {


Thread thread = new Thread(()->{


while (!flag) {


System.out.println("别打扰我,我正在转账呢");


try {


Thread.sleep(1000);


} catch (InterruptedException e) {


e.printStackTrace();


}


}


System.out.println("转账终止");


});


thread.start();


//此时等 3s 中之后发现有内鬼,然后终止交易


Thread.sl


【一线大厂Java面试题解析+核心总结学习笔记+最新架构讲解视频+实战项目源码讲义】
浏览器打开:qq.cn.hn/FTf 免费领取
复制代码


eep(3000);


System.out.println("有内鬼,终止交易");


//因为此时有内鬼,然后将标识符设置为 true


flag = true;


}


}



方法二:


1.通过 interrupt 来中断线程


public class ThreadDemo6 {


public static void main(String[] args) throws InterruptedException {


Thread thread = new Thread(()->{


//调用 isInterrupted()


while (!Thread.currentThread().isInterrupted()){


System.out.println("我正在转账呢");


try {


Thread.sleep(1000);


} catch (InterruptedException e) {


e.printStackTrace();


}


}


//当被中断后打印交易终止


System.out.println("交易终止");


});


thread.start();


Thread.sleep(3000);


System.out.println("有内鬼,终止交易");

用户头像

极客good

关注

还未添加个人签名 2021.03.18 加入

还未添加个人简介

评论

发布
暂无评论
【线程】(1),java高级特性编程及实战pdf百度云