【线程】,kafka入门与实践

【线程】,kafka入门与实践,第1张

线程】,kafka入门与实践
  • c).run方法可以多次调用,而start方法不行

  • 那么为什么start不能多次调用:

  • (1)调用start方法就会创建一个PCB

  • (2)在使用一个链表把PCB连接起来,而当再一次start的时候会创建一个一样的PCB这时候就加不到链表当中去了

*d).run方法属于自定义的类,而start属于Thread类

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.sleep(3000);

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

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

flag = true;

}

}

方法二:

1.通过interrupt来中断线程

public class ThreadDemo6 {

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

Thread thread = new Thread(()->{

//调用isInterrupte

《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》

【docs.qq.com/doc/DSmxTbFJ1cmN1R2dB】 完整内容开源分享

d()

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(“有内鬼,终止交易”);

//让t1终止,调用线程本身的interrupt

thread.interrupt();

}

}

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/zaji/5656488.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存