【Java-II】多线程详解 P3(Day5-20210704-Day1)

Livox MID-360与FAST-LIO2实战:从驱动部署到参数调优的完整指南 激光雷达惯性里程计(LIO)是机器人定位与建图(SLAM)领域的核心技术,它通过紧耦合融合激光雷达点云与惯性测量单元(IMU)数据,实现高精度、低漂移的位姿估计。其核心原理在于利用IMU的高频数据预测运动,并用激光雷达的精确测距信息进行校正与优化,从而在快速运动或特征缺失场景下保持鲁棒性。这项技术的工程价值在于为自动驾驶、移动机器人及三维重建提供了可靠的前端里程计解决方案。针对Livox MID-360固态雷达与FAST-LIO2这一热门组合,其应用场景广泛覆盖了室内外导航与地图构建。本文聚焦于**驱动部署 阅读详情

程序:main线程 gc守护线程 (JVM创建的 用于垃圾回收)

02 线程创建

线程创建的三种方式
  1. Thread class
  2. Runnable 接口
  3. Callable 接口(工作之后用的多)

Java虚拟机允许同时执行多个线程
在这里插入图片描述在这里插入图片描述在这里插入图片描述

03 继承Thread类

线程创建方式1:
1、继承Thread类,重写run()方法,调用start()开启线程
线程启动需要时间,线程开启不一定立即执行,需要CPU调度执行
demo例子

package threadLearn.demo01;
public class TestThread1 extends Thread{
    @Override
    public void run() {
        //run 方法线程体
        for (int i = 0; i<20;i++){
            System.out.println("我在看代码---"+i);
        }
    }
    public static void main(String[] args) {
        //main线程,主线程
        //创建一个线程对象
        TestThread1 testThread1 = new TestThread1();
        //调用start()方法开启线程
        testThread1.start();
        for (int i=0;i<20;i++){
            System.out.println("我在学习多线程---"+i);
        }
    }
}

04 网图下载

多线程下载网图

package threadLearn.demo01;
import org.apache.commons.io.FileUtils;

import java.io.File;
import java.io.IOException;
import java.net.URL;

//练习Thread,实现多线程同步下载图片
public class TestThread2 extends Thread{
    private String url;//网络图片地址
    private String name;//保存的文件名

    public TestThread2() {
    }

    public TestThread2(String url, String name){
        this.url=url;//网络图片地址
        this.name=name;//保存的文件名
    }

    @Override
    public void run() {
        WebDownloader webDownloader = new WebDownloader();
        webDownloader.downloader(url,name);
        System.out.println("下载的文件名为:"+name);
    }

    public static void main(String[] args) {

        TestThread2 th1 = new TestThread2("https://n.sinaimg.cn/news/transform/350/w210h140/20210713/a5f2-b6ea01a4a9952832066c1bc25dfa04e7.jpg","20210713_1.jpg");
        TestThread2 th2 = new TestThread2("https://n.sinaimg.cn/news/transform/350/w210h140/20210713/64a8-8bf9fb26cdea87a38a446e5c1c685c4c.jpg","20210713_2.jpg");
        TestThread2 th3 = new TestThread2("https://n.sinaimg.cn/ent/transform/175/w105h70/20210713/4047-3aee4bc841cadc336b7104473218c732.jpg","20210713_3.jpg");
        th1.start();
        th2.start();
        th3.start();

    }
}

class WebDownloader{
    public void downloader(String url,String name){
        try{
            FileUtils.copyURLToFile(new URL(url),new File(name));
        }catch (IOException e){
            e.printStackTrace();
            System.out.println("IO异常,downloader方法出现问题");
        }
    }
}

05 实现Runnable接口

在这里插入图片描述

package threadLearn.demo01;
import org.apache.commons.io.FileUtils;

import java.io.File;
import java.io.IOException;
import java.net.URL;

//练习Thread,实现多线程同步下载图片
public class TestThread2 implements Runnable{
    private String url;//网络图片地址
    private String name;//保存的文件名

    public TestThread2() {
    }

    public TestThread2(String url, String name){
        this.url=url;//网络图片地址
        this.name=name;//保存的文件名
    }

    @Override
    public void run() {
        WebDownloader webDownloader = new WebDownloader();
        webDownloader.downloader(url,name);
        System.out.println("下载的文件名为:"+name);
    }

    public static void main(String[] args) {

        TestThread2 th1 = new TestThread2("https://n.sinaimg.cn/news/transform/350/w210h140/20210713/a5f2-b6ea01a4a9952832066c1bc25dfa04e7.jpg","20210713_1.jpg");
        TestThread2 th2 = new TestThread2("https://n.sinaimg.cn/news/transform/350/w210h140/20210713/64a8-8bf9fb26cdea87a38a446e5c1c685c4c.jpg","20210713_2.jpg");
        TestThread2 th3 = new TestThread2("https://n.sinaimg.cn/ent/transform/175/w105h70/20210713/4047-3aee4bc841cadc336b7104473218c732.jpg","20210713_3.jpg");
        new Thread(th1).start();
        new Thread(th2).start();
        new Thread(th3).start();

    }
}

class WebDownloader{

    public void downloader(String url, String name){
        try{
            FileUtils.copyURLToFile(new URL(url),new File(name));
        }catch (IOException e){
            e.printStackTrace();
            System.out.println("IO异常,downloader方法出现问题");
        }
    }
}
VS Code下载安装与使用教程 VSCode下载安装与使用教程 阅读详情

相关推荐

deepfake detection数据集

最全Deepfake数据集总结,包含各个数据集下载链接: https://github.com/deepfakeinthewild/deepfake_in_the_wild Dataset name Download Generate method Deepfake videos Actors Deepfake-TIMIT low download De...

where_is_horse的博客 1万+

京东三面问到java多线程问题,我慌了

1. 并行和并发有什么区别? 并行是指两个或者多个事件在同一时刻发生;而并发是指两个或多个事件在同一时间间隔发生。 并行是在不同实体上的多个事件,并发是在同一实体上的多个事件。 在一台处理器上“同时”处理多个任务,在多台处理器上同时处理多个任务。如hadoop分布式集群。 所以并发编程的目标是充分的利用处理器的每一个核,以达到最高的处理性能。 2. 线程和进程的区别? 简而言之,进程是程序运行和资源分配的基本单位,一个程序至少有一个进程,一个进程至少有一个线程。进程在执行过程中拥有独立的内存单元,而多个

weixin_49114080的博客 377

风控IV、AUC、KS python计算代码

df_temp:数据集,Y:是否逾期标签,feas_list:需要计算IV的 变量。2、 按月和不同Y 下的 IV计算。

暮雨听轩的专栏 1618

Java线程(一):线程结构图及状态

线程结构图、线程状态及状态转换图

SayNight 6134

从逻辑门到存储阵列:NAND与NOR闪存命名与结构原理详解

在数字电路与半导体存储器领域,逻辑门是构建一切复杂功能的基础单元,其输入输出关系定义了计算与存储的基本原理。与非门(NAND)和或非门(NOR)作为通用逻辑门,其真值表和行为模式深刻影响了芯片设计。基于这些原理,现代闪存技术发展出了两种核心架构:NAND Flash和NOR Flash。这两种闪存的命名直接源于其内部存储单元阵列的连接方式,分别模拟了与非门和或非门的逻辑关系。这种结构差异决定了它们根本的技术价值:NOR Flash采用并联结构,支持快速随机读取,适用于代码存储与原地执行(XiP);而NAND

weixin_33377602的博客 339

[数字电路]用与非门实现BCD译码器驱动数码管

Hello,大家好。这里是xdd_core,好久不见。今天来和大家聊聊大一数字电路课程的一个课设。# Key word:BCD Decoder,Proteus8.x,NAND Gate,Digital Circuit# 流程:Proteus8.x仿真电路并绘制PCB导出Gerber文件打样,最终实物验证。# 以下为我对这个课设的report(里面对整个设计做了详细介绍,并设计了完整的验证电路) 感谢观看,仅供参考,未经作者允许,禁止转载/抄袭,本文已上传至数据库,查重必挂QAQ BCD to 7-Segme

xddcore的博客 6012

思维图+核心!腾讯大佬的“百万级”JVM学习笔记,疯狂加持

前言 毫不夸张地说,JVM是现代软件工程最成功的案例之一。因为它自带GC,又有无数可以微调的参数,且运行极其稳定可靠,所以,许多厂商的核心业务系统,才敢放心地用Java编写,运行在JVM之上。 近几年深入学习JVM调优的人越来越多,因为互联网一线大厂的Java高级开发工程师JD中都明确要求了“JVM调优”的能力。JVM调优是跳槽大厂必备的技能,但是由于JVM知识体系过于庞大,非系统学习难以学透,并且即使掌握了全部理论,没有实操,依然无法应对面试! 今天,特将腾讯大佬疯狂加持的“千万级”JVM 笔记分享给你们

weixin_47066028的博客 606

在Docker中集成GPU监控体系

先上效果图 等文档整理出来再更

tamako0v0的博客 2470

07-Netty 高性能架构设计-线程模型(Reactor模式)

线程模型基本介绍 不同的线程模型, 对程序的性能有很大影响,为了搞清Netty线程模式,我们来系统的讲解下各个线程模式,最后看看Netty线程模型有什么优越性 目前存在的线程模型有 传统阻塞IO服务模型 Reactor模式 根据Reactor的数量和处理资源线程池的数量不同,有三种典型的实现 单 Reactor 单线程 单 Reactor 多线程 主从 Reactor 多线程 Ne...

彼岸舞的博客 303

别再手动下单了!用Python+EasyTrader+同花顺,5分钟搞定你的第一个自动化交易机器人

本文详细介绍了如何使用Python和EasyTrader结合同花顺客户端快速构建自动化交易机器人。从环境配置到实战脚本编写,涵盖自动打新、条件单、跟单策略等核心功能,并分享性能优化与风险控制技巧,帮助投资者高效实现自动化交易。

weixin_30381317的博客 398

E-SMILES:化学信息学中的分子表示革命与应用

分子表示是化学信息学和计算化学的基础技术,其核心是将复杂的分子结构转化为计算机可处理的数字化形式。传统SMILES格式虽然广泛应用,但在处理复杂化学体系时存在局限性。Extended SMILES(E-SMILES)通过扩展语法规则,支持立体化学、配位键等特殊结构的精确描述,显著提升了分子表示的准确性和适用范围。在药物研发中,E-SMILES能准确描述蛋白质-配体相互作用和共价抑制剂;在材料科学领域,它支持纳米材料和超分子体系的多尺度建模。结合机器学习等前沿技术,E-SMILES正在推动化学信息处理效率的革

weixin_28683165的博客 279

【Java-II】多线程详解 P1-2(Day5-20210704-Day1)

... 126

Linux系统故障排查思路实践教程(上)

本文主要介绍了Linux系统日志分析与常见故障排查的实用方法。首先从系统日志的分类及其涉及的日志文件进行说明;其次详细讲解了忘记用户密码的解决方案;接着对系统无法启动问题,提供了异常断电后修复文件系统、/etc/fstab文件丢失恢复等常见故障的处理方案。最后介绍了文件系统只读错误的排查思路和修复方法,包括磁盘空间检查、文件系统修复等实用技巧。全文提供了大量具体命令和操作流程,为Linux系统维护人员提供了实用的故障处理指南。

提供C#相关开发 、云计算、运维测试、网络安全相关技术分享与服务,有意向可联系。 328

【Java基础】【狂神说Java】Java零基础学习视频通俗易懂P60-76(OOP)(Day4、5-20210703、04)

同一个包下的类不需要导入就可以使用,不同包下的类,必须导入包才能使用。 static修饰静态方法,静态方法可以通过类名.方法名,进行调用,非静态方法通过这种方式进行调用会报错。 static修饰的内容是和类一起加载的,非静态方法是和对象一起生成的(类实例化之后才存在),所以static方法不能调用非静态方法。 Java是值传递 一个类里只能有一个public的类 package oop; public class Student { //静态方法 通过类名.方法名 调用 publ...

... 274

5G大唐杯题库(史上最全).xlsx

史上最全,最新整理的5G大唐杯题库。内含多选,单选,判断,填空,以及实际操作重点内容。设sheet1-sheet18共18页Excel工作表。内容超全,覆盖面广。现在买单,绝不后悔,超值超值!!!!

YOLO算法方盒型快递包裹检测数据集+5000数据集

YOLO算法方盒型快递包裹检测数据集, 包含5000多张方盒型快递包裹检测数据集,数据集目录已经配置好,划分好 train,val, test,并附有data.yaml文件,yolov5、yolov7、yolov8,yolov9等算法可以直接进行训练模型,txt格式标签,数据集和检测结果参考:https://blog.youkuaiyun.com/zhiqingAI/article/details/124230743https://blog.youkuaiyun.com/zhiqingAI/article/details/142426701数据集配置目录结构data.yaml:train: ../train/imagesval: ../valid/imagestest: ../test/imagesnc: 1names:- box_packet

【Java】使用idea进行Java后端开发 常用的快捷键

try…catch… 对于多行代码想要使用trycatch代码块将其包围起来,只需选中需要包围的代码块,按住组合键:ctrl+alt+t即可选择是try-catch还是try-catch-finally

... 264

鸿蒙开发HarmonyOS 2.0培训视频.zip

目录:day1:01-初识鸿蒙.mp402-课程安排.mp403-鸿蒙的官方定义.mp404-鸿蒙的特点.mp405-鸿蒙和安卓的对比.mp406-鸿蒙的发展前景.mp407-鸿蒙开发-完整开发流程.mp408-鸿蒙开发-注册和实名认证.mp409-开发工具的下载和安装.mp410-开发工具-基本设置.mp411-开发工具的项目结构.mp412-HelloWorld案例-如何运行项目.mp413-HelloWorld案例-页面中的包含关系.mp414-HelloWorld案例-config.json配置文件.mp415-HelloWorld案例-程序的启动流程.mp416-页面跳转案例-页面搭建.mp417-页面跳转案例-代码实现.mp4day2:01-组件布局和事件的内容介绍.mp402-单击事件-代码实现.mp403-单击事件的代码分析.mp404-单击事件的四种写法.mp405-双击事件.mp406-长按事件.mp407-滑动事件-三个动作.mp408-滑动事件-上下左右滑动.mp409-滑动事件-bug处理.mp410-滑动事件-onTouchEvent方法的返回值.mp411-案例-多按钮被点击.mp412-案例-双击点赞双击取消.mp413-案例-随机更换段子.mp414-案例-点击更换随机图片.mp415-案例-统计点击次数.mp4day3:01-组件-概述.mp402-Text组件-宽高三种值的写法.mp403-Text组件-vp和fp.mp404-Text组件-颜色属性.mp405-Text组件-外边距.mp406-Text组件-内边距.mp407-Text练习1-登录页面.mp408-Text练习2-修改密码页面.mp4...........网盘文件永久链接

【Java】深入理解Java虚拟机P1-3(JVM性能调优+内存模型+虚拟机原理)

JDK JRE JVM的区别和联系 JDK:Java Development Kit,Java 开发工具包 JRE:Java Runtime Environment,Java 运行时环境 JVM:Java Virtual Machine, Java 虚拟机,它只认识 xxx.class 这种类型的文件,它能够将 class 文件中的字节码指令进行识别并调用操作系统向上的 API 完成动作。jvm 是 Java 能够跨平台的核心。 这三者的关系是:一层层的嵌套关系。JDK>JRE>JVM。 图片源

... 256

(全新整理)中国省、市、县耕地面积数据(1990-2023年)

1、资源内容地址:https://blog.youkuaiyun.com/2301_79696294/article/details/1559128082、数据特点:今年全新,手工精心整理,放心引用,数据来自权威,且标注《数据来源》,相对于其他人的控制变量数据准确很多,适合写论文做实证用 ,不会出现数据造假问题3、适用对象:大学生,本科生,研究生小白可用,容易上手!!!4、课程引用: 经济学,地理学,城市规划与城市研究,公共政策与管理,社会学,商业与管理

【Java基础】【狂神说Java】Java零基础学习视频通俗易懂P33-44(Day3-20210702)

p33 Java流程控制01:用户交互Scanner p34 Java流程控制02:Scanner进阶使用 p35 顺序结构 p36 if选择结构 p37 Switch选择结构 p38 While循环详解 p39 DoWhile循环 p40 For循环详解 1 Java流程控制01:用户交互Scanner 1.1 next() package base; import java.util.Scanner; public class Demo01 { public static void m.

... 252

【Java基础】【狂神说Java】Java零基础学习视频通俗易懂P1-20(Day1)

JDK JRE JVM 命令行下编译运行java文件 Hello.java文件内容 public class Hello{ public static void main(String[] args){ System.out.print("Hello World!"); } } 准备好java文件之后就可以进行下面的操作了!! 打开cmd,进入Hello.java所在的文件路径,然后cmd下输入javac Hello.java,编译文件生成.class文件 javac Hello.java ..

... 249

【Java学习笔记】1-13重载

方法的重载 定义: **多个方法的名称一样,但是参数列表不一样。**方法名称区分大小写!!! 好处: 只需要记住唯一一个方法名称,就可以实现类似的多个功能。 方法重载与下列因素相关: 1、参数个数不同 2、参数类型不同 3、参数的多类型顺序不同 方法重载与下列因素无关: 1、与参数的名称无关 2、与方法的返回值类型无关 //错误示范,方法重载与方法的返回值无关 public static int sum(int a,int b){ return a+b } public static double sum

... 242

【Java基础】【狂神说Java】Java零基础学习视频通俗易懂P21-26(Day1昨天忘记发布了)

Java小技巧(idea下) psvm +tab键 补全 public static void main(String[] args) { } sout+enter键/鼠标点击选择 可以实现补全 System.out.println(); System.out.println(); /*+enter键生成多行注释符号 /* */ Java基本语法 1 注释、标识符、关键字 1.1 注释 1.1.1 单行注释(只能注释改行为文字) //这里写注释,只能注释改行为文字

... 237

【Java基础】【狂神说Java】Java零基础学习视频通俗易懂P45-51(方法)(Day3-20210702)

1 方法 1.1 方法的基本知识 main方法是由java虚拟机调用的 1.2 方法的重载 1.3 命令行传参 package method; public class Demo03 { public static void main(String[] args) { for(int i=0;i<args.length;i++){ System.out.println(args[i]); } } } 打开cmd jav

... 227

【Java基础】【狂神说Java】Java零基础学习视频通俗易懂P52-59(数组)(Day3-20210702)

1 数组

... 223

【Java基础】【狂神说Java】Java零基础学习视频通俗易懂P27-32(Day2-20210628)

P27 P27 基本运算符 P28 自增自减运算符

... 222

【Java-II】多线程详解 P18-19(Day16-20210715-Day4)

线程同步 发生在多个线程操作同一个资源 线程同步机制 三大不安全案理 每个线程都有自己的工作内存 Case1:买票 package threadLearn.syn; //不安全的买票 public class UnsafeBuyTicket{ public static void main(String[] args) { BuyTicket buyTicket = new BuyTicket(); new Thread(buyTicket,"苦逼的我").st

... 193

【Java-II】网络编程实战讲解 P7-12(Day19-20210718-Day2)

1.7 TCP文件上传实现 package web; import java.io.*; import java.net.ServerSocket; import java.net.Socket; import java.util.Scanner; public class testServerDemo02 { public static void main(String[] args) throws IOException { //1、创建服务 ServerSo

... 191

【Java基础】【狂神说Java】Java零基础学习视频通俗易懂P77-79(异常)(Day5-20210704)

package exception; public class Test { public static void main(String[] args) { int a=1; int b=0; try{//try监控区域 System.out.println(a/b); }catch (Exception e){//catch捕获异常 括号里是:想要捕获的异常类型 //可以多个catc...

... 174
上一篇: 【Java】使用idea进行Java后端开发 常用的快捷键
下一篇: 【Java-II】多线程详解 P6-8(Day14-20210713-Day2)
菜菜2022
博客等级 码龄9年 67粉丝 1033原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值