news 2026/9/25 1:25:53

创建线程的五种写法

作者头像

张小明

前端开发工程师

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/9/1 5:38:49

全球通用人形机器人公司盘点,智元AGIBOT引领商业化浪潮

随着具身智能与量产技术的成熟,全球通用人形机器人行业已迈入规模商业化落地的关键阶段,呈现“技术全栈化、场景多元化、量产规模化”三大特征。各国企业加速布局,一批兼具核心技术与落地能力的企业脱颖而出。本文将从多个维度,盘…

作者头像 李华
网站建设 2026/9/24 17:29:11

AutoGPT能否用于自动生成测试数据?Mock系统构建

AutoGPT能否用于自动生成测试数据?Mock系统构建 在现代软件开发节奏日益加快的今天,前后端并行开发已成为常态。然而,一个老生常谈的问题始终存在:后端接口尚未完成时,前端如何开展联调?自动化测试又该如何…

作者头像 李华
网站建设 2026/9/25 2:18:03

36、进程管理与系统调用追踪全解析

进程管理与系统调用追踪全解析 1. 进程报告准备流程 在进行进程相关的操作时,我们常常需要对进程信息进行整理和筛选,以获取我们需要的报告。下面是一个七阶段的管道流程来完成报告的准备工作: 1. ps 输出 :ps 命令的输出包含类似如下的行: USER COMMAND root sche…

作者头像 李华
网站建设 2026/9/25 8:08:57

AutoGPT如何判断任务优先级变化?动态重规划机制

AutoGPT如何判断任务优先级变化?动态重规划机制 在如今的AI浪潮中,我们早已不再满足于一个只会回答问题的聊天机器人。真正让人眼前一亮的是那些能“自己动起来”的智能体——它们拿到一个目标后,不需要步步指点,就能拆解任务、调…

作者头像 李华
网站建设 2026/9/23 12:49:53

打造专属AI助手:LobeChat角色预设配置完全手册

打造专属AI助手:LobeChat角色预设配置完全手册 在今天,几乎每个开发者都用过ChatGPT——但你有没有想过,为什么每次对话都像从零开始?同一个问题问两次,答案可能完全不同;想让它扮演某个专业角色&#xff0…

作者头像 李华
网站建设 2026/9/24 20:08:09

Android-Audio-代码路径说明

Android Audio 代码路径详解 整体架构图 ┌─────────────────────────────────────────────────────────────┐ │ 应用层 (Applications) │ ├───────────…

作者头像 李华