多线程的学习(1)
线程的创建方式
1.继承Thread类
package duoXianCheng;public class MyThread extends Thread{public void run(){System.out.println("hoh");}public static void main(String[] args) {MyThread m1 = new MyThread();m1.start();//start启动线程,调用重写的run方法}
}
2.实现Runnable接口
package duoXianCheng;public class MyRunnable implements Runnable {@Overridepublic void run() {System.out.println("Hello World");}public static void main(String[] args) {Runnable runnable = new MyRunnable();Thread thread = new Thread(runnable);//创建Thread对象,将runnable对象传入构造方法中thread.start();}
}
3.实现Callable接口
package duoXianCheng;import java.util.concurrent.Callable;
import java.util.concurrent.FutureTask;public class MyCallable implements Callable<Integer> {@Overridepublic Integer call() throws Exception {return 0;}public static void main(String[] args) {FutureTask<Integer> futureTask = new FutureTask<Integer>(new MyCallable());new Thread(futureTask).start();//}
}
Thread,Callable,Runnable的区别:
- Thread:
- 是 Java 中用于表示线程的类。它直接继承自 Object 类,并实现了 Runnable 接口。
- 可以直接创建一个 Thread 对象来启动一个新线程,在新线程中执行特定的任务。
- Runnable:
- 是一个接口,只有一个抽象方法
run()。 - 实现了 Runnable 接口的类必须实现
run()方法,用于定义线程要执行的任务。通常将 Runnable 实例作为参数传递给 Thread 构造函数来创建新线程并执行该任务。
- 是一个接口,只有一个抽象方法
- Callable:
- 也是一个接口,它与 Runnable 类似,但有一个不同之处在于它的
call()方法可以返回一个结果并且可以抛出异常。 - 通常与
FutureTask结合使用,用于需要有返回值的异步任务。
- 也是一个接口,它与 Runnable 类似,但有一个不同之处在于它的
线程的优先级:
package duoXianCheng;public class youXianJi {public static void main(String[] args) {// 创建两个线程,一个优先级高,一个优先级低Thread lowPriorityThread = new Thread(() -> {for (int i = 0; i < 5; i++) {System.out.println("低优先级线程在运行:" + i);try {Thread.sleep(500);} catch (InterruptedException e) {e.printStackTrace();}}});lowPriorityThread.setPriority(2);Thread highPriorityThread = new Thread(() -> {for (int i = 0; i < 5; i++) {System.out.println("高优先级线程在运行:" + i);try {Thread.sleep(500);} catch (InterruptedException e) {e.printStackTrace();}}});highPriorityThread.setPriority(9);lowPriorityThread.start();highPriorityThread.start();}
}
线程调度
两种调度方式
1、分时调度模型:所有线程轮流使用 CPU 的使用权,平均分配每个线程占用 CPU 的时间片
2、抢占式调度模型:优先让优先级高的线程使用 CPU,如果线程的优先级相同,那么会随机选择一个,优先级高的线程获取的 CPU 时间片相对多一些
Java使用的是抢占式调度模型、随机性
假如计算机只有一个 CPU,那么 CPU 在某一个时刻只能执行一条指令,线程只有得到CPU时间片,也就是使用权,才可以执行指令。
所以说多线程程序的执行是有随机性,因为谁抢到CPU的使用权是不一定的
设置和获取优先级
final int getPriority() 返回此线程的优先级
final void setPriority(int newPriority) 更改此线程的优先级线程默认优先级是5;线程优先级的范围是:1-10
相关文章:
多线程的学习(1)
线程的创建方式 1.继承Thread类 package duoXianCheng;public class MyThread extends Thread{public void run(){System.out.println("hoh");}public static void main(String[] args) {MyThread m1 new MyThread();m1.start();//start启动线程,调用重…...
PyCharm借助MobaXterm跳板机连接服务器
服务器信息: Step 1 MovaXterm→Session→SSH输入服务器信息 Step 2 MovaXterm→Session→SSH→Network setting→SSG gateway(jump host) 输入跳板机信息 键入密码即可 Step 3 MovaXterm→Tunneling→New SSH tunnel 依次输入:A本机端口,…...
计算机毕业论文基于Android 的签到系统设计与实现
计算机专业本科毕业设计(论文)开题报告 毕业设计(论文)题目:基于Android的签到系统设计与实现 文章目录 毕业设计论文开题报告一、课题的目的及意义(含国内外的研究现状分析):二、课题任务、重点研究内容、实现途径、条件:摘 要1. 绪论1.1. 研究背景1.2. 研究现状1.3.…...
量化学习-02
1、宏观经济学基础概念 宏观经济简单背景 宏观经济,就是在宏观范畴以全局视角观察经济现象,分析其中的经济总量。该宏观范畴所包含的范围可以指一个国家或地区,是由众多微观个体组成的一个经济体,而这里面的微观个体可以指一个家…...
SAP_MM模块-设置业务合作伙伴类型字段必输(多种方案)
一、业务背景 公司需要把供应商增加一个细分的维度,并且要求该字段设置为必输,防止用户新增供应商时忘记维护。这里给用户找了一个分类的字段:业务合作伙伴类型,本文主要讲解如何设置该字段设置为必填; 注意ÿ…...
STM32平台上实现串口接收不定长数据-实际项目中应用
文章目录 一、中断串口监听方式初始化中断处理串口监听 二、空闲中断方式三、空闲中断DMA方式四、总结 本文将详细介绍在STM32平台上实现串口接收不定长数据的几种方法 一、中断串口监听方式 这种方式也是我早期使用的方式,直接使用寄存器来操作,这种方…...
AWD入门
一、简介 AWD(Attack With Defense,攻防兼备)模式。你需要在一场比赛里要扮演攻击方和防守方,攻者得分,失守者会被扣分。也就是说攻击别人的靶机可以获取 Flag 分数时,别人会被扣分,同时你也要保护自己的主机不被别人…...
T3矩阵看功率
每个像素的T3矩阵,功率等于特征值的和。 不同的像素的T3矩阵相加,可不能用特征分解的相加,因为两个T矩阵的特征向量不同...
VLMEvalKit多模态大模型评测工具源码解析
vlmeval/api和vlmeval/vlm文件夹下分别是api接口和本地运行的大模型的代码 基类都是base vlmeval/dataset是数据集处理代码 vlmeval/inference.py是推理代码 run.py的整个流程 1 vlmeval/api/base.py 主要为需要与外部API交互的系统提供了一个通用的框架 类属性 allowed_type…...
将 Docker 安装到指定目录
将 Docker 安装到指定目录 将 Docker 安装到指定目录 Docker 默认安装在 C:\Program Files\Docker\Docker,这可能会占用大量 C 盘空间。你可以按以下步骤将 Docker 安装到其他盘(例如 E 盘): 创建安装目录:在 E 盘创…...
哪些企业需要部署SD-WAN?
首先,让我们先明确SD-WAN的定义。SD-WAN,中文全称为软件定义广域网(Software-Defined Wide Area Network),通过集中化管理与流量控制,帮助企业优化网络性能,提升用户体验。与传统广域网…...
通信基站类型、频段与网络标准
【1】通信基站类型 移动通信基站根据覆盖面积和功率大小主要可以分为以下几种类型: 宏基站(宏站):这是最常见的基站类型,具有较大的发射功率和较广的覆盖范围,通常覆盖半径从1到25公里不等。宏基站主要用于…...
Java IO教程之Java 文件一口气讲完!( *︾▽︾)
Java 文件 Java IO教程 - Java文件 File类的对象是文件或目录的路径名的抽象表示。 创建文件 我们可以从中创建一个 File 对象 路径名父路径名和子路径名URI(统一资源标识符) 我们可以使用File类的以下构造函数之一创建一个文件: File(…...
如何在 Ubuntu 24 上安装 Vmware Tools
原文 Vmware Tools作用 增强图形显示性能 分辨率适配 可使虚拟机的分辨率能够自动适应窗口大小的变化。当您调整 VMware 软件窗口的大小时,Ubuntu 24 虚拟机的屏幕分辨率会随之自动调整,为用户提供更好的视觉体验,方便在不同的使用场景下进…...
内网穿透:如何借助Cloudflare连接没有公网的电脑的远程桌面(RDP)
内网穿透:如何借助Cloudflare连接没有公网的电脑的远程桌面(RDP)-含详细原理配置说明介绍 前言 远程桌面协议(RDP, Remote Desktop Protocol)可用于远程桌面连接,Windows系统(家庭版除外)也是支持这种协议的,无需安装…...
明星作家都在使用的电子书制作工具,现在向大家介绍
在数字化时代,电子书已经成为了广大读者和作家的新宠。越来越多的作家开始尝试将手中的文字作品转化为电子书,以便在更广泛的平台上推广和传播。那么,如何高效、便捷地制作电子书呢?今天,我们就来为大家揭秘一款明星…...
简单认识Maven 3-认识pop.Xml配置文件中的代码
pom.xml是 Maven 项目的核心配置文件,它包含了项目的各种配置信息,以下是对其主要内容含义的认识: 一、项目基本信息 <groupId>: 定义项目的组织或团体的唯一标识符,通常采用反向域名的格式。例如,“…...
LangChain4j系列—OpenAI开发实例
一、引入Maven依赖 1、纯Java <dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j-open-ai</artifactId><version>0.35.0</version> </dependency> 2、Spring boot <dependency><groupId&g…...
Java 中简化操作集合的方法
在日常 Java 开发中,我们经常需要操作集合,如 List、Set 和 Map。虽然 Java 提供了丰富的集合框架供开发者使用,但在实际编写业务逻辑时,如何简化集合操作、提高代码可读性和效率,依然是一个经常遇到的问题。特别是随着…...
ArcGIS Pro SDK (十七)宗地结构
ArcGIS Pro SDK (十七)宗地结构 环境:Visual Studio 2022 + .NET6 + ArcGIS Pro SDK 3.0 宗地结构 1 获取活动记录 string errorMessage = await QueuedTask.Run(() => {...
测试微信模版消息推送
进入“开发接口管理”--“公众平台测试账号”,无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息: 关注测试号:扫二维码关注测试号。 发送模版消息: import requests da…...
树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法
树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作,无需更改相机配置。但是,一…...
从零实现富文本编辑器#5-编辑器选区模型的状态结构表达
先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...
FFmpeg 低延迟同屏方案
引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...
【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器
——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的一体化测试平台,覆盖应用全生命周期测试需求,主要提供五大核心能力: 测试类型检测目标关键指标功能体验基…...
渲染学进阶内容——模型
最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...
EtherNet/IP转DeviceNet协议网关详解
一,设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络,本网关连接到EtherNet/IP总线中做为从站使用,连接到DeviceNet总线中做为从站使用。 在自动…...
智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制
在数字化浪潮席卷全球的今天,数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具,在大规模数据获取中发挥着关键作用。然而,传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时,常出现数据质…...
Angular微前端架构:Module Federation + ngx-build-plus (Webpack)
以下是一个完整的 Angular 微前端示例,其中使用的是 Module Federation 和 npx-build-plus 实现了主应用(Shell)与子应用(Remote)的集成。 🛠️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...
服务器--宝塔命令
一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行! sudo su - 1. CentOS 系统: yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...
