当前位置: 首页 > news >正文

认识线程

1.进程与线程概念

一个进程可以有多个线程

一个进程挂了,不会影响到其他进程

一个线程挂了,同一个进程的线程可能都会出现问题

同一个进程的线程之间,共用了同一份资源

2.创建线程

继承Thread,重写run

2.1并发执行

重写了run方法

一路向下走hello main的主线程,一路走hello thread的线程

2.2把start改成run

运行结果也只有一个死循环了

一个java进程中,至少会有一个main线程

3.sleep

while(true)运行太快了,可以用sleep减速

sleep里的单位是毫秒,1000等于1秒

此处可能会抛出一个受查异常,必须要显式处理

解决方法:

ALT+回车

这个代码是重写父类的run,父类的run没有throws,子类方法也就不能有throws

4.创建线程其他的写法

4.1.实现Runnable,重写run

这里的内容和作用和之前是一样的

4.2继承Thread,重写run,但是使用匿名内部类

4.3基于lambda表达式

public class Demo5 {public static void main(String[] args) {Thread t = new Thread(() -> {while (true){System.out.println("hello thread");try {Thread.sleep(1000);}catch (InterruptedException e){e.printStackTrace();}}});t.start();while (true){System.out.println("hello main");try {Thread.sleep(1000);} catch (InterruptedException e) {throw new RuntimeException(e);}}}
}

lambda表达式为什么不用重写run方法?

lambda自己就是run方法(run方法是线程的入口,告诉线程你要干嘛,而lambda就是用来表示逻辑的,使用lambda就能描述出当前的线程要干嘛


http://www.mrgr.cn/news/93107.html

相关文章:

  • SpaCy处理NLP的详细工作原理及工作原理框图
  • 《AJAX:前端异步交互的魔法指南》
  • Qt之QGraphicsView图像操作
  • Python----数据分析(Matplotlib三:绘图二:箱图,散点图,饼图,热力图,3D图)
  • day3作业
  • 【pta】1031 查验身份证
  • windows下使用Hyper+wsl实现ubuntu下git的平替
  • 多视图几何--2单应矩阵-2.0从0-1理解并计算单应矩阵
  • 测试工程师的DeepSeek提效4:测试效能提升应用
  • Keepalived 入门详解:高可用集群部署最佳实践!
  • ASP.NET Core JWT认证与授权
  • servlet tomcat
  • 使用ast获取py文件中所有函数与类名
  • 【每日学点HarmonyOS Next知识】Web Header更新、状态变量嵌套问题、自定义弹窗、stack圆角、Flex换行问题
  • VTP故障诊断与排除
  • 月结保障:回滚慢、行锁频发
  • 【零基础到精通Java合集】第二十一集:JVM常用垃圾收集器
  • 历年杭州电子科技大学计算机考研复试上机真题
  • PMP项目管理—资源管理篇—3.获取资源
  • PMP项目管理—资源管理篇—5.管理团队