news 2026/2/8 10:11:46

创建线程的五种写法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
创建线程的五种写法

目录

1.继承Thread类,并重写run()方法

2.实现Runnable接口,并重写run()方法

3.使用匿名内部类,继承Thread类,重写run方法

4.使用匿名内部类,实现Runnable接口,重写run()方法

5.使用lambda表达式


1.继承Thread类,并重写run()方法

//继承Thread类,并重写run方法 class MyThread extends Thread{ public void run(){ while(true){ System.out.println("hello thread"); try { Thread.sleep(1000); } catch (InterruptedException e) { throw new RuntimeException(e); } } } } public class demo1 { public static void main(String[] args) throws InterruptedException { Thread t=new MyThread(); t.start(); //main线程执行的任务 while(true){ System.out.println("hello main"); Thread.sleep(1000); } } }

2.实现Runnable接口,并重写run()方法

//实现Runnable接口,并重写run()方法 class MyRunnable implements Runnable{ @Override public void run() { while(true){ System.out.println("hello thread"); try { Thread.sleep(1000); } catch (InterruptedException e) { throw new RuntimeException(e); } } } } public class demo2 { public static void main(String[] args) { Runnable runnable=new MyRunnable(); Thread t=new Thread(runnable); t.start(); } }

3.使用匿名内部类,继承Thread类,重写run方法

//使用匿名内部类,继承Thread类,重写run方法 public class demo3 { public static void main(String[] args) { Thread t=new Thread(){ public void run(){ while(true){ System.out.println("hello thread"); try { Thread.sleep(1000); } catch (InterruptedException e) { throw new RuntimeException(e); } } } }; t.start(); } }

4.使用匿名内部类,实现Runnable接口,重写run()方法

//使用匿名内部类,实现Runnable接口,重写run()方法 public class demo4 { public static void main(String[] args) { Runnable runnable=new Runnable() { @Override public void run() { while(true){ System.out.println("hello thread"); try { Thread.sleep(1000); } catch (InterruptedException e) { throw new RuntimeException(e); } } } }; Thread t=new Thread(runnable); t.start(); } }

5.使用lambda表达式

//使用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) { throw new RuntimeException(e); } } }); t.start(); } }

使用lambda表示式,本质上是使用“匿名函数”,其最主要的用途是用作回调函数

在java中,方法必须要依托于类来存在,以上的函数式接口()->{},在编译器背后实际上做的工作是,创建一个匿名函数式接口的子类,并且创建出对应的实例,并重写了里面的方法。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/7 1:40:30

15、Kubernetes 与 Docker 优化操作系统全解析

Kubernetes 与 Docker 优化操作系统全解析 一、Kubernetes 组件与 API 探索 Kubernetes 有众多组件,相关文件如下: - kube-apiserver.tar - kube-controller-manager - kube-controller-manager.docker_tag - kube-controller-manager.tar - kubectl - kubelet - ku…

作者头像 李华
网站建设 2026/2/7 18:50:06

17、Docker不同操作系统及工具使用指南

Docker不同操作系统及工具使用指南 1. 在AWS上启动Atomic实例以使用Docker 有时候,你可能既不想用Vagrant来尝试Atomic,也不想使用ISO镜像。这时可以在Amazon EC2上启动一个Atomic实例,因为AWS EC2上有可用的Atomic AMI。 具体操作步骤如下: 1. 打开AWS管理控制台,通过…

作者头像 李华
网站建设 2026/2/6 0:51:53

CAGRA:面向GPU优化的高精度图索引技术核心解析

如何理解CAGRA 目前主流的图索引技术主要分为两类:以CAGRA(Milvus中已实现)为代表的迭代式图构建技术,和以Vamana(能力构建中)为代表的插入式图构建技术,两者针对的场景与技术路径存在显著差异,分别适配不同的数据规模与业务需求。 其中,CAGRA是迭代式构建的代表,…

作者头像 李华
网站建设 2026/2/5 13:17:55

(Arxiv-2025)全属性:用于视觉概念个性化的开放词汇属性编码器

全属性:用于视觉概念个性化的开放词汇属性编码器 paper title:Omni-Attribute: Open-vocabulary Attribute Encoder for Visual Concept Personalization paper是snap发布在Arxiv 2025的工作 图 1. Omni-Attribute 是一种开放词汇的图像属性编码器&#…

作者头像 李华
网站建设 2026/2/6 22:11:30

2025年微服务全链路性能瓶颈分析平台对比与最佳实践

核心观点摘要 1. 微服务架构下,全链路性能瓶颈分析成为保障系统稳定与高效的核心需求,行业正由单点测试向全链路、智能化方向演进。 2. 当前主流解决方案包括SaaS化压测平台、开源自建工具链及一体化智能测试平台,各有适用场景与技术权衡…

作者头像 李华
网站建设 2026/2/8 4:17:03

LED背光驱动电路设计

LED背光驱动电路设计是电子工程中非常实用的技能呢💡 它涉及到电源转换、恒流控制、调光技术等多个方面,能够让LED背光稳定、高效地工作。💡 LED背光驱动电路的核心要素恒流输出LED是电流敏感器件,需稳定电流驱动以保证亮度一致和…

作者头像 李华