线程基础一

YOLOv11【第六章:模型压缩与极致优化篇·第15节】YOLOv11 专用剪枝工具库使用指南! 🏆 本文收录于专栏 《YOLOv11实战:从入门到深度优化》。本专栏围绕 YOLOv11 的改进、训练、部署与工程优化 展开,系统梳理并复现当前主流的 YOLOv11 实战案例与优化方案,内容目前已覆盖 分类、检测、分割、追踪、关键点、OBB 检测 等多个方向。 阅读详情

什么是线程?
线程:就是进程中一个负责程序执行的控制单元(执行路径)
一个进程中可以多执行路径,称之为多线程。
一个进程中至少要有一个线程。
开启多个线程是为了同时运行多部分代码。
每一个线程都有自己运行的内容,这个内容可以称之为线程要执行的任务
多线程解决什么问题?

可以使多部分代码  '同时' 进行,提高运行效率和速度


如何实现一个线程?

方式一:继承Thread类,在类中定义一个run()方法,执行的任务或者代码
就放在run()方法中,其实Thread实现了Runnable接口。
测试类:
方式二:
    直接实现Runnable接口,创建类对象,作为参数放入Thread的实例化对象中。
注意:实现接口方式,一般是在类继承了别的类无法继承Thread类时使用的,当然也可以
直接使用。
测试类:

方式三(参考别的大神的):

实现Callable接口通过FutureTask包装器来创建Thread线程

Callable接口(也只有一个方法)定义如下:


方式四(也是参考别的大神的):

ExecutorService、Callable、Future三个接口实际上都是属于Executor框架。返回结果的线程是在JDK1.5中引入的新特征,有了这种特征就不需要再为了得到返回值而大费周折了。而且自己实现了也可能漏洞百出。

可返回值的任务必须实现Callable接口。类似的,无返回值的任务必须实现Runnable接口。

执行Callable任务后,可以获取一个Future的对象,在该对象上调用get就可以获取到Callable任务返回的Object了。

注意:get方法是阻塞的,即:线程无返回结果,get方法会一直等待。

再结合线程池接口ExecutorService就可以实现传说中有返回结果的多线程了。

import java.util.concurrent.*; 
import java.util.Date; 
import java.util.List; 
import java.util.ArrayList; 
 
/**
* 有返回值的线程
*/ 
@SuppressWarnings(
"unchecked") 
public class Test { 
public static void main(String[] args) throws ExecutionException, 
    InterruptedException { 
   System.out.println(
"----程序开始运行----"); 
   Date date1
= new Date(); 
 
  
int taskSize = 5; 
  
// 创建一个线程池 
   ExecutorService pool =
Executors.newFixedThreadPool(taskSize); 
  
// 创建多个有返回值的任务 
   List<Future> list =
new ArrayList<Future>(); 
  
for (int i = 0; i < taskSize; i++) { 
    Callable c
= new MyCallable(i + " "); 
   
// 执行任务并获取Future对象 
    Future f =
pool.submit(c); 
   
// System.out.println(">>>" + f.get().toString()); 
    list.add(f); 
   } 
  
// 关闭线程池 
   pool.shutdown(); 
 
  
// 获取所有并发任务的运行结果 
  
for (Future f : list) { 
   
// 从Future对象上获取任务的返回值,并输出到控制台 
    System.out.println(">>>" +
f.get().toString()); 
   } 
 
   Date date2
= new Date(); 
   System.out.println(
"----程序结束运行----,程序运行时间【" 
     + (date2.getTime() - date1.getTime()) + "毫秒】"
); 
} 
} 
 
class MyCallable implements Callable<Object> { 
private String taskNum; 
 
MyCallable(String taskNum) { 
  
this.taskNum = taskNum; 
} 
 
public Object call() throws Exception { 
   System.out.println(
">>>" + taskNum + "任务启动"); 
   Date dateTmp1
= new Date(); 
   Thread.sleep(
1000); 
   Date dateTmp2
= new Date(); 
  
long time = dateTmp2.getTime() - dateTmp1.getTime(); 
   System.out.println(
">>>" + taskNum + "任务终止"); 
  
return taskNum + "任务返回运行结果,当前任务时间【" + time + "毫秒】"; 
} 
} 















Python爬虫经典案例第67篇:社交媒体平台爬取:Twitter数据采集实战 Twitter(现更名为X)是全球最具影响力的社交媒体平台之一,拥有超过3.3亿月度活跃用户。作为一个实时信息传播平台,Twitter上的数据涵盖了新闻、政治、娱乐、科技等各个领域,具有极高的研究价值:本文将深入探讨Twitter数据采集的技术方案,包括官方API调用、网页爬取和浏览器自动化三种方式。Twitter采用现代化的微服务架构,主要特点包括:Twitter作为全球最大的社交媒体平台,拥有完善的反爬机制:在开始爬取前,需要明确合法的数据采集方式:重要提示:未经授权爬取Twitter数据可能违反服务条 阅读详情

相关推荐

【Cadence】Virtuoso@LayoutXL 差分电路版图同步修改

对于差分电路,器件和部分走线通常是对称的,只需要画一半,另一半通过镜像操作完成。因此,需要对差分电路进行同步的修改,保证电路的差分对称性和正确的连接关系。然而,通常版图会经过多次修改,修改的部分可能在镜像的时候被遗漏。左边画了金属块,右边也出现了同步出现了金属块。进入group会有同步复制的提示。

乾巽的博客 3050

一 线程基础

文章目录一、并行和并发二、进程和线程1.进程1.1 进程概念1.2 API操作2.线程2.1 线程概念2.2 线程调度2.3 多线程优势三、创建线程1.继承Thread2.实现Runnable3.匿名内部类四、Runnable和Thread的区别 一、并行和并发 并行:是指并排行走或者同时实施。是指两个或者多个事件同时发生。 并发:同时发生,可是和并行不一样的是在宏观层面上来看是同时发生,微观上其实还是交替执行。是指两个或者多个事件在同一事件片区执行。宏观上看起来同时执行。 并发是两个队列交替使用一台咖

大佛拈花的博客 1万+

PCIe设备内存访问实战:从ioremap到DMA映射的完整流程解析

本文深入解析了PCIe设备内存访问的完整流程,涵盖从CPU通过ioremap访问设备寄存器,到设备通过DMA映射高效读写主机内存的核心机制。详细探讨了虚拟地址、物理地址与总线地址的转换关系,对比了一致性与流式DMA映射的适用场景及同步要点,并阐述了IOMMU在安全与效率中的作用,为驱动开发者提供了实战代码与关键陷阱分析。

weixin_29201933的博客 506

线程基础(一)

1. 线程基础知识 1.1.线程和进程 进程: 每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销,一个进程包含1–n个线程。(进程是资源分配的最小单位) 线程: 是进程中的实体,一个进程可以拥有多个线程,一个线程必须有一个父进程。 一个线程就是一个指令流,将指令流中的一条条指令以一定的顺序交给CPU 执行 。 线程,有时被称为轻量级进程(Lightweight Process,LWP),是CPU调度执行的最小单位。 进程与线程的区别 1.进程基本上相互独立的,而线程存在于

GeorgeXu1990的博客 347

从零到一:手把手教你构建自定义ReaxFF力场参数

本文手把手教你从零构建自定义ReaxFF力场参数,详解反应力场的动态键序机制与参数化逻辑。通过LAMMPS实战演示,涵盖训练数据准备、参数优化算法选择及性能优化技巧,助力研究人员精准模拟化学反应过程。适用于材料科学、催化研究等领域,特别适合已掌握分子动力学基础的进阶用户提升力场开发能力。

weixin_28365523的博客 1057

从零开始:手把手教你规划与部署华为FusionCompute虚拟化平台(含网络规划避坑指南)

本文详细介绍了华为FusionCompute虚拟化平台的规划与部署流程,特别针对网络规划中的常见问题提供了避坑指南。从硬件软件清单检查、网络平面配置到VRM部署方案选择,帮助用户高效完成部署并优化性能,适用于云计算环境中的虚拟化平台搭建。

weixin_28693447的博客 243

线程(一)——线程基础

线程是学习java编程必须要学习的知识模块,其重要程度毋庸赘言。本篇的目的就是尽量全面地介绍一下程相关的基础知识,包括一些概念定义、使用方式、注意事项等。废话少说,现在开始。 一、为什么要使用多线程        大部分人都知道多线程,并知道如何使用多线程,但是使用多线程的原因,一般都不会去管。为了更好地理解多线程,我们有必要去弄清楚这个问题。也就是弄清楚使用多线程的好处是什么。我认为使用多线程...

leizhiheng320的博客 571

dmx512协议c语言编程,DMX512协议+c程序代码.pdf

DMX512 协议1.协议简介DMX 是Digital MultipleX 的缩写 ,意为多路数字传输。DMX512 控制协议是美国舞台灯光协会(USITT)于1990 年发布的灯光控制器与灯具设备进行数据传输的工业标准 ,全称是 USITT DMX512(1990) ,包括电气特性、数据协议、数据格式等方面的内容。2. 电气特性和物理层2.1. 电气特...

weixin_39928993的博客 2543

Java线程基础(一)

Java线程基础(一) Java主要是通过java.lang.Thread类和java.lang.Runnable接口实现线程机制的。java.lang.Thread类当中实现了java.lang.Runnable接口。Runnable接口为关联的Thread对象的线程提供了执行的代码,这些代码写在run()方法内,该方法为void类型无返回值。 package threadAndRu...

qq_42260006的博客 225

科研党必备:Zotero+Deepseek 打造AI文献阅读助手(附详细插件配置指南)

本文详细介绍了如何利用Zotero和Deepseek打造AI文献阅读助手,提升科研效率。从Zotero基础安装到中文文献处理插件茉莉花的配置,再到Deepseek API的集成与模型选择策略,全面覆盖了AI辅助阅读的关键环节。特别适合需要高效管理海量文献的科研工作者,显著提升文献筛选和分析速度。

backprop5master的博客 424

C++经典面试题100例及答案

答:把一些具有共性的对象归类后形成一个集合,也就是所谓的类。答:这样可以提高编译效率,因为分开的话只需要编译一次生成对应的.obj文件后,再次应用该类的地方,这个类就不会被再次编译,从而大大的提高了编译效率。答:这种函数会自动为内联函数,这种函数在函数调用的地方在编译阶段都会进行代码替换。答:常对象是指在任何场合都不能对其成员的值进行修改的对象。答:所谓的回调函数,就是预先在系统的对函数进行注册,让系统知道这个函数的存在,以后,当某个事件发生时,再调用这个函数对事件进行响应。

usstmiracle的博客 3万+

多线程基础一

需要创建Runnable的实现类,重写run方法 ,创建Runnable的实现类对象r1 ,创建Thread类的对象,将r1作为构造方法的参数进行传递 ,调用start方法启动线程。) ,创建Callable的实现类对象 ,创建FutureTask对象,用来进行结果的管理操作 ,创建Thread类的队象 ,启动线程。系统在产生一个线程,或是在各个线程之间作切换工作时,负担要比进程小得多,因此,线程也被称为轻量级进程。执行完毕后才会被唤醒。* 某条线程获取到了锁资源,锁关闭,当里面的任务执行完成,锁释放。

weixin_62316729的博客 886

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

java 【多线程基础 一】线程概念

进程是操作系统对⼀个正在运行的程序的⼀种抽象,换言之,可以把进程看做程序的⼀次运行过程;同时,在操作系统内部,进程又是操作系统进行资源分配的基本单位。进程就是正在执行的应用程序应用程序有两种状态1.没有运行时,是一个exe文件,存在于硬盘上2.运行时,exe会被加载到内存中,并且cpu执行其中的指令执行进程中的指令,需要硬件资源的多进程编程虽然能够解决利用多核心编程的问题,但多进程编程每次创建进程/销毁编程,开销都比较严重(需要分配硬件资源,还有时间).

2301_80641575的博客 1081

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

线程(一) ————线程基础

title: 线程(一) ————线程基础 date: 2019-08-11 08:40:05 tags: [Linux,线程] categories: Linux 一、线程的基本概念 1、什么是线程         线程本质是 轻量级的进程 ,对于cpu 来讲线程和进程同等级         进程是系统中程序执行和资源分配的基本单位。每个进程有自己的数据段、代码段和堆栈段。这就造成进程在进行切换等操作时都需要上下文切.

菜鸟的博客 215

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

⛳ Java多线程 一,线程基础

在计算机科学中,程序(Program),进程(Process)和线程(Thread)是三个重要的概念,它们都与执行计算机任务和程序相关。程序(Program):程序是一系列指令的集合,这些指令按照特定的顺序组织,用于完成特定的任务或执行特定的操作。程序是静态的,它们只是存储在计算机磁盘或存储设备中,并不直接执行。当我们想要运行一个程序时,操作系统会将程序加载到内存中,并将其转换为进程,然后才能执行其中的指令。进程(Process):进程是计算机程序在执行时的实例。

松柏123的博客 587

【Java线程一】线程基础

Java多线程状态图   Java多线程状态图一:        Java多线程状态图二:        Java线程状态3      线程阻塞的原因:   1.IO阻塞,比如线程状态一种的Blocked 2.线程互斥导致的阻塞,比如尝试获得一个对象锁,而这个锁被其它对象持有,那么这个线程只能等待。 一个对象可以有多个线程等待获得它的锁,因此,这里有一个对象锁池...

bit1129的博客 172

线程学习一:线程基础

2、 JVM 线程与操作系统的线程啥关系 ? 先理解 线程模型 内核级别线程 内核级别线程(Kernel-level threading)是指用户进程通过内核提供API创建的线程。这样用户进程里的线程和内核调度的线程是1:1对应的。这也就最简单的线程管理方法。

人有匪气,代码才能飞起 400

线程(一)- 线程基础

什么是线程 线程是现代操作系统的最小调度单元,这些线程拥有各自的计数器、堆栈和局部变量等属性,并能够访问共享的内存变量。 public class MultiThread { public static void main(String[] args) { //获取Java线程管理MXBean ThreadMXBean threadMXBean = ManagementFactory.getThreadMXBean(); //不需要获取同步的mon.

zy的博客 217

【线程】一、线程基础点

线程基础 三种启动方式: 实现Thread类,然后new 一个对象,调用start方法 实现Runable、接口,然后new Thread(new Runable()).start(),同理可用lambd表达式表示 线程池Executors public class StartThread { static class Thread1 extends Thread{ @Override public void run() { S

一只狮的专栏 142

线程基础(一)

2015年自己定了个目标就是开始写写博客,所以心血来潮,我也来写写一些基础的东西。 线程,网上大把多资料,自己写也不会有什么新意。不过在自己做过的一些项目中用到很多线程相关的知识,但没有真正的去总结,去归纳的,导致到了用的时候有baidu、google(google被我朝禁了...我觉得是一种悲哀)。好了,下面开始我的线程基础了 1、线程的定义 线程只由相关堆栈(系统栈或用户栈)寄...

dingmouchun3795的博客 220

线程基础学习一

1.线程的五个状态 创建、就绪、运行、阻塞、终止 2.start之后并不一定是立即执行,代表的是就绪状态; 3.阻塞状态: 阻塞状态是正在运行的线程由于某种原因放弃cpu的使用权,进入就绪状态; 有三种类型: ①运行的线程执行wait方法,线程被jvm放入等待池中; ②运行的线程获取同步锁时,该同步锁被别的线程占用,线程被jvm放入同步锁中; ③运行的线程执行sleep方法或join...

ff445566的博客 177

线程基础以及线程之间的共享与协作<一>

线程基础以及线程之间的共享与协作基础概念什么是进程和线程CPU核心数和线程数的关系CPU时间片轮转机制理解并行和并发高并发编程的意义和好处多线程程序注意事项认识Java里的线程Java程序天生就是多线程的线程的启动和终止启动终止 基础概念 什么是进程和线程 进程是操作系统进行资源分配的最小单位。 进程是操作系统进行资源分配的最小单位。其中资源包括:CPU、内存空间、磁盘I/O等,同一进程中的多条线程共享该进程中的全部系统资源,而进程和进程之间是相互独立的。进程是具有一定独立功能的程序关于某个数据集合的一次运

qq5621的博客 258

java基础 线程 一_Java基础 - 线程(一)

一、什么是线程首先,介绍一下线程、进程的概念。进程是操作系统分配资源的最小单元,线程是操作系统调度的最小单元。进程是指运行中的应用程序,Windows任务管理器进程窗口看到的每一项都是一个进程。每运行一个程序,系统就会启动一个线程并为它分配一个独立的内存空间。 线程是进程中的一个实体,是被系统独立调度和分派的基本单位,是进程的执行单元、执行路径。线程自己基本上不拥有系统资源,只拥有一点在运行中必不...

weixin_39743695的博客 214

线程基础一 前台线程与后台线程

  当程序启动时定义了两个不同的线程。默认情况下,显式创建的线程是前台线程。前台线程与后台线程的主要区别在于:进程会等待所有的前台线程完成工作后再结束工作,但是如果只剩下后台线程,则会直接结束工作。从下面的小例子可以看出。   通过定义两个线程,并手动的设置ThreadTwo对象的IsBackground属性为true来创建一个后台线程。通过配置来实现第一个线程会比第二个线程先完成。 ...

deqiuzong8701的博客 156

【JUC编程】一、线程的基础概念

多线程是指在同一个进程中同时运行多个线程。通过多线程,可以让程序在进行I/O操作时不浪费CPU时间,提升系统性能。例如,Tomcat服务器可以同时处理多个客户端请求,而不是顺序排队。

学不会就接着学 965

线程基础(一)线程中的方法

Thread类中的实例方法 从Thread类中的实例方法和类方法的角度讲解Thread中的方法,这种区分的角度也有助于理解多线程中的方法。实例方法,只和实例线程(也就是new出来的线程)本身挂钩,和当前运行的是哪个线程无关 1、start() start()方法的作用讲得直白点就是通知"线程规划器",此线程可以运行了,正在等待CPU调用线程对象得run()方法,产生一个异步执行的效果 p...

踟蹰千年的博客 414
上一篇: springmvc框架笔记
下一篇: String StringBuffer StringBuilder之间的区别
系统维护我
博客等级 码龄9年 1粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值