多线程基础(2)
1.创建线程的多种方式方法一继承Thread来创建一个类class MyThread extends Thread{ override public void run(){ System.out.println(打个比方) } } public class Demo1{ public static void main(String[] args){ Mythread tnew MyThread(); t.start(); } }方法二实现Runnable接口class MyRunnable inplement Runnable{ override publicn void run(){ System.out.println(打个比方) } } public class Demo2{ public static void main(String[] args){ Thread tnew Thread(new MyRunnable()); t.start(); } }方法三匿名内部类创建thread子类对象Thread tnew Thread(){ override public void run(){ System.out.println(举个例子)}; };方法四匿名内部类创建Runnable子类对象Thread t2 new Thread(new Runnable() { Override public void run() { System.out.println(使用匿名类创建 Runnable 子类对象); } });方法五lambda表达式创建Runnable子类对象Thread t3 new Thread(() - System.out.println(使用匿名类创建 Thread 子类对象)); Thread t4 new Thread(() - { System.out.println(使用匿名类创建 Thread 子类对象); });2.多线程的优势-提升运行速度通过并发执行和单独执行进行比较public class demo1 { private static final long count 1000000000; public static void main(String[] args) throws InterruptedException { Thrm1(); Thrm2(); } private static void Thrm1() throws InterruptedException { long beginSystem.nanoTime(); Thread threadnew Thread(() -{ int a0; for (int i 0; i count; i) { a--; } }); thread.start(); int b0; for (int i 0; i count; i) { b--; } thread.join(); long end System.nanoTime(); double time(end-begin)*1.0/1000/1000; System.out.printf(%f %n,time); } private static void Thrm2() { long beginSystem.nanoTime(); int a0; for (int i 0; i count; i) { a--; } int b0; for (int i 0; i count; i) { b--; } long end System.nanoTime(); double time(end-begin)*1.0/1000/1000; System.out.printf(%f %n,time); } }并发: 399.651856 毫秒 串行: 720.616911 毫秒3.Thread类的常用方法用lambda举个例子public class ThreadLambdaExample { public static void main(String[] args) { // 1. 无参构造空任务 Thread t1 new Thread(() - {}); // 2. 传入Runnable任务 Thread t2 new Thread(() - { System.out.println(线程t2执行中...); }); // 3. 指定线程名空任务 Thread t3 new Thread(() - {}, 这是我的名字); // 4. 传入Runnable任务并指定线程名 Thread t4 new Thread(() - { System.out.println(线程t4执行中...); }, 这是我的名字); // 启动线程 t2.start(); t4.start(); } }3.Thread的几个常见属性属性获取方法idgetId()名称getName()状态优先级getState()是否为后台线程getPriority()是否存活isAlive()是否被中断isInterrupted()ID 是线程的唯一标识不同线程不会重复名称是各种调试工具用到状态表示线程当前所处的一个情况下面我们会进一步说明优先级高的线程理论上来说更容易被调度到关于后台线程需要记住一点JVM会在一个进程的所有非后台线程结束后才会结束运行。是否存活即简单的理解为 run 方法是否运行结束了线程的中断问题下面我们进一步说明public class demo2 { public static void main(String[] args) { Thread threadnew Thread(() - { try { System.out.println(Thread.currentThread().getName()我还活着); Thread.sleep(100); } catch (InterruptedException e) { throw new RuntimeException(e); } System.out.println(Thread.currentThread().getName()我马上死兄弟); }); System.out.println(Thread.currentThread().getName()IDthread.getId()); System.out.println(Thread.currentThread().getName()名字thread.getName()); System.out.println(Thread.currentThread().getName()状态thread.getState()); System.out.println(Thread.currentThread().getName()优先级thread.getPriority()); System.out.println(Thread.currentThread().getName()后台线程thread.isDaemon()); System.out.println(Thread.currentThread().getName()活着thread.isAlive()); System.out.println(Thread.currentThread().getName()被中断thread.isInterrupted()); thread.start(); while(thread.isAlive()){ System.out.println(Thread.currentThread().getName()状态thread.getState()); } } }

相关新闻

OpenClaw:通过飞书发送文件的完整教程

OpenClaw:通过飞书发送文件的完整教程

OpenClaw:通过飞书发送文件的完整教程 最近的一次实践中,我发现 OpenClaw 的 message 工具完全原生支持文件发送,不需要任何改造或额外配置。本文将详细讲解如何通过 OpenClaw 在飞书中发送各种类型的文件。 📌 文章导览 适用场景…

2026/7/5 17:37:06 阅读更多 →
prometheus告警-以CPU使用率告警为例

prometheus告警-以CPU使用率告警为例

以一个完整的告警流程为例,从配置到具体告警的整个流程,详细剖析各个环节 整体流程的时序图如下: Notification Channel(Webhook/Email/Slack)Alertmanager(端口: 9093)Alert Rules Engine(内部组件)Prometheus Server(端口: 9090)Node Expor…

2026/7/5 18:36:12 阅读更多 →
亲测!专业展厅文化墙选择实践分享

亲测!专业展厅文化墙选择实践分享

行业痛点分析在当前展厅文化墙领域,存在着诸多技术挑战。传统广告制作设备精度不足、功能单一,无法实现宽幅、浮雕、双面无色差等高端工艺。测试显示,传统设备制作的文化墙画面精度低,色彩偏差明显,在展示效果上大打折…

2026/7/5 20:20:49 阅读更多 →

最新新闻

图论算法之深度遍历岛屿问题

图论算法之深度遍历岛屿问题

200. 岛屿数量 - 力扣&#xff08;LeetCode&#xff09; class Solution {public int numIslands(char[][] grid) {int res 0;for(int r 0; r< grid.length; r){for(int c 0; c<grid[0].length; c){if(grid[r][c] 1){res;dfs(grid, r,c);}}}return res;}//从岛屿位置…

2026/7/6 3:07:59 阅读更多 →
Lemos:动态知识网络新范式

Lemos:动态知识网络新范式

Ima 与 Lemos 在知识组织方式上的本质区别在于&#xff0c;Ima 追求精确、静态、可推理的知识结构&#xff0c;而 Lemos 则致力于构建动态、关联、可生长的智能知识网络。Lemos 的核心优势在于其“AI知识图谱”双引擎驱动的范式&#xff0c;将知识库从被动的存储中心转变为主动…

2026/7/6 3:07:58 阅读更多 →
AI智能伴侣开发实战:从零构建你的专属聊天机器人

AI智能伴侣开发实战:从零构建你的专属聊天机器人

一、引言&#xff1a;当AI走进生活 在2026年的今天&#xff0c;人工智能早已不再是科幻电影中的遥远概念。从ChatGPT到DeepSeek&#xff0c;从Gemini到Qwen&#xff0c;大语言模型正以前所未有的速度改变着我们与计算机交互的方式。然而&#xff0c;对于大多数开发者而言&…

2026/7/6 2:59:57 阅读更多 →
避开 Playwright 常见陷阱,让你的 UI 测试更快更稳

避开 Playwright 常见陷阱,让你的 UI 测试更快更稳

做UI自动化测试的朋友应该都有过这种体验——本地跑得好好的&#xff0c;一上CI就挂&#xff1b;周一全绿&#xff0c;周二莫名其妙红一片&#xff1b;加了sleep能过&#xff0c;不加就报元素找不到。 如果你也遇到过这些情况&#xff0c;别急着怀疑是自己的代码写得不够好。很…

2026/7/6 2:57:57 阅读更多 →
AI Agent Skills:从代码补全到智能开发的效率革命

AI Agent Skills:从代码补全到智能开发的效率革命

&#x1f680; 30款热门AI模型一站整合&#xff0c;DeepSeek/GLM/Qwen 随心用&#xff0c;限时 5 折。 &#x1f449; 点击领海量免费额度 如果你还在用 AI 编程助手只是让它帮你补全代码行&#xff0c;那你可能只发挥了它 10% 的潜力。真正的效率革命&#xff0c;发生在你教…

2026/7/6 2:57:57 阅读更多 →
SONiC 2024 容器化架构解析:10个核心Docker容器如何驱动网络转发

SONiC 2024 容器化架构解析:10个核心Docker容器如何驱动网络转发

SONiC 2024容器化架构深度解析&#xff1a;10个核心容器如何构建下一代云网络1. 现代网络操作系统的容器化革命当微软在2016年首次开源SONiC项目时&#xff0c;很少有人能预料到这个基于Linux的网络操作系统会彻底改变数据中心网络的构建方式。八年后的今天&#xff0c;SONiC已…

2026/7/6 2:55:56 阅读更多 →

日新闻

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2与MySQL单元测试兼容性&#xff1a;5个关键SQL语句差异与规避方案1. 单元测试中的数据库兼容性挑战在Java开发领域&#xff0c;单元测试是保证代码质量的重要环节。当应用涉及数据库操作时&#xff0c;测试环境的搭建往往成为开发者的痛点。H2数据库因其轻量级、内存模式和快…

2026/7/6 0:01:17 阅读更多 →
Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南&#xff1a;用RBTray一键隐藏窗口到系统托盘 【免费下载链接】rbtray A fork of RBTray from http://sourceforge.net/p/rbtray/code/. 项目地址: https://gitcode.com/gh_mirrors/rb/rbtray 你是否厌倦了Windows任务栏上密密麻麻的图标&…

2026/7/6 0:01:17 阅读更多 →
Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C 运行时库一键安装终极指南&#xff1a;告别DLL缺失烦恼 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经遇到过这样的情况&#xff1a;下载了…

2026/7/6 0:05:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools&#xff1a;5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱&#xff0c;支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里&#xff0c;参与了关于混合后量子密码学的讨论&#xff0c;应付端点攻击找茬的人&#xff0c;还参与留言板讨论后&#xff0c;发现“威胁模型”对多数人仍是陌生概念&#xff0c;且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”&#xff1a;我理解的渗透测试到底是什么&#xff1f;每次看到新闻里说某个大公司的数据被“黑”了&#xff0c;或者某个网站被攻击导致服务瘫痪&#xff0c;你是不是和我一样&#xff0c;心里会冒出两个念头&#xff1a;一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

月新闻