并发编程。

news2024/11/18 11:22:40

进程


1.什么是进程?
进程是具有独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的
独立单位。进程是可与其他程序并发执行的程序,在一个数据集合上的运行过程。它是系统进行
资源分配和调度的一个独立单位。

2.进程的几个概念


1 结构特性
为了控制和管理进程,系统为每个进程设立一个**进程控制块\- PCB。
2 动态性
进程的实质是程序的一次执行过程,进程是动态产生,动态消亡的,进程在其生命周期内,在三种基本状态(产生、执行、消亡)之间转换。
3 异步性
由于进程间的相互制约,使进程具有执行的间断性,即进程按各自独立的、不可预知的速度向前推进。
4.并发性
任何进程都可以同其他进程一起向前推进。
5.独立性
进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位。


3 线程


1. 线程是程序执行的最小单位\,而进程是操作系统分配资源的最小单位;
2. 一个进程由一个或多个线程组成,线程是一个进程中代码的**不同执行路线\;
3. 进程之间相互独立,但同一进程下的**各个线程之间共享程序的内存空间(包括代码段,数据集,堆
等)及一些进程级的资源(如打开文件和信号等),某进程内的线程在其他进程不可见;
4. 调度和切换:线程上下文切换比进程上下文切换要快

4.线程和进程的区别

5.线程的切换方式

6.线程生命周期

7.线程创建

 7.1 继承Thread类

public class ThreadDemo01 extends Thread {
@Override
public void run() {
for(int i =0;i<10;i++) {
System.out\.print(this.getName()+":"+i);
}
}
}
public static void main(String[] args) {
new ThreadDemo01().start();
}

运行结果

Thread-0:0
Thread-0:1
Thread-0:2
Thread-0:3
Thread-0:4
Thread-0:5
Thread-0:6
Thread-0:7
Thread-0:8
Thread-0:9


2.实现Runnable接口

public class ThreadDemo01 implements Runnable {
@Override
public void run() {
for(int i =0;i<10;i++) {
System.*out\*.println(Thread.*currentThread*().getName()+":"+i);
}
}
public static void main(String[] args) {
new Thread(new ThreadDemo01()).start();
}
}
Thread-0:0
Thread-0:1
Thread-0:2
Thread-0:3
Thread-0:4
Thread-0:5
Thread-0:6
Thread-0:7
Thread-0:8
Thread-0:9

3.实现Callable接口

public class ThreadDemo01 implements Callable<Integer> {
@Override
public Integer call() throws Exception {
int sum = 0;
for (int i = 1; i < 1000; i++) {
sum += i;
}
return sum;
}
public static void main(String[] args) throws Exception {
FutureTask<Integer> ft =
new FutureTask<Integer>(new ThreadDemo01());
ft.run();
System.*out\*.println("s:" + ft.get());
}
}
s:499500

8.线程就绪

Thread t = new Thread( );
t.start( ); //启动线程(线程就绪)

1.线程运行
一旦CPU分配了运行时间,就调用线程的run( )方法。

2.线程阻塞

(1) sleep(n)
(2) join()
(3) yield()
(4) wait

3.线程死亡

9.守护线程和用户线程

守护最后一个用户线程才结束。

1.用户线程

创建的线程

2.守护线程

public static void main(String[] args) {
Thread t1 = new Thread(() -> {
while (true) {
try {
Date d = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yy-MM-dd hh:mm:ss");
System.out.println(sdf.format(d));
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
});
Thread t2 = new Thread(()->{
for(int i=0;i<100;i++){
try {
System.out.println("我是许则"+i);
Thread.sleep(100);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
});
t1.setDaemon(true);
t1.start();
t2.start();

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2162323.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vivado sdk 烧写到SD卡

首先在bd文件中使能SD卡 实际根据实际原理图设置 烧写流程和烧写FLASH一样&#xff0c;产生boot.bin文件&#xff0c;只需要将BOOT.bin文件复制到SD卡里&#xff0c;将SD卡插入板卡&#xff0c;然后设置SD卡启动即可 需要注意的是&#xff1a;SD卡文件系统必须格式化为FAT32…

Stable Diffusion绘画 | XYZ Plot:让对比一目了然

XYZ Plot 是 SD 自带的&#xff0c;无需额外安装。 它的作用&#xff0c;是给我们用来对比不同参数下&#xff0c;生成图片效果的区别。 位置在页面左侧底部&#xff1a; 实操 开启 x轴进行对比&#xff0c;这里面有各种可选的对比参数&#xff1a; 现在 X轴类型 选择「Sampler…

服务器安装pytorch_geometric torch_scatter踩坑记录

conda create -n pyg python3.8.12 pip install torch1.13.0安装的版本如下 pip install torch-scatter pip install torch-sparse pip install torch-cluster pip install torch-spline-conv pip install torch-geometric2.2.0 pip install ipykernel python -m ipykernel i…

C语言 typedef - C语言零基础入门教程

目录 一.typedef 简介 二.typedef 实战 1.typedef 定义基本数据变量 2.typedef 定义结构体 A.常规定义结构体B.typedef 定义结构体C.结构体使用 typedef 和不使用 typedef 区别 3.typedef 定义函数指针 三.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础…

uni-app进行微信小程序开发,快速上手

准备工作 IDE https://www.dcloud.io/hbuilderx.html 微信小程序开发工具 下载 / 稳定版更新日志 (qq.com) 安装流程 打开HBuilderX 点击这个logo打开终端 然后 下载一下终端插件 初始化一个demo 通过vue-cli命令行创建项目 uni-app官网 (dcloud.net.cn) &#xff08;官…

【软件造价咨询】软件每年运维费用取开发费用百分之几合适

应用软件的运维费用相对于系统开发建设费用的占比因项目而异&#xff0c;但可以通过一些行业标准和基准数据来进行估算。根据北京软件造价评估联盟2020至2023年发布的《中国软件行业基准数据》CSBMK文件&#xff0c;在这项文件中用百分位数统计列出了“应用软件运维费用占比”的…

mock虚拟接口技术

一、什么是mock mock指的就是使用mock创建出来的一个虚拟的接口 二、对于测试人员而言&#xff0c;我们为什么要使用mock 当我们进行接口测试时&#xff0c;如果对应的接口还没有开发好&#xff0c;但是我们又需要用到这个接口响应的信息&#xff0c;这个时候我们就可以使用…

2024年华为杯研究生数学建模竞赛D题(时空演化模型+脆性指数 完整文章|可视化)

2024年华为杯研究生数学建模竞赛D题 全文请从 底部名片 处加群获取哦~ 问题重述 题目背景&#xff1a; 地理系统是由自然和人文多要素综合作用形成的复杂巨系统。传统上&#xff0c;地理学家通过宏观结构和定性分析方法描述地理系统的主导特征&#xff0c;如地形分布、气候…

两个月学习大语言模型(LLM)的详细计划,保姆级教程非常详细收藏我这一篇就够了!

随着人工智能技术的发展&#xff0c;大语言模型&#xff08;Large Language Models, LLMs&#xff09;因其在自然语言处理、机器翻译、文本生成等领域的广泛应用而受到越来越多的关注。对于希望掌握这一前沿技术的朋友来说&#xff0c;制定一个系统的学习计划至关重要。本计划旨…

笔试强训,约瑟夫环plus孩子们的游戏​编辑解法二.动态规划大数加法牛客.在字符串中找出连续的最长数字串力扣703.数据流中第K大元素​编辑

目录 约瑟夫环plus 孩子们的游戏​编辑 解法二.动态规划 大数加法 牛客.在字符串中找出连续的最长数字串 力扣703.数据流中第K大元素​编辑 约瑟夫环plus 孩子们的游戏 基本模拟&#xff0c;没啥特殊技巧 import java.util.*;public class Solution {/*** 代码中的类名、…

03-Docker下载加速

03-Docker下载加速 docker下载加速 方式1&#xff1a;使用 网易数帆、阿里云等容器镜像仓库进行下载。 网易数帆官网&#xff1a;https://sf.163.com/ 例如&#xff0c;下载网易数帆镜像中的mysql。&#xff08;网易数帆的地址为 hub.c.163.com&#xff0c;网易数帆对dockerh…

企业微信VS钉钉:高效办公工具推荐!

这两者各有千秋&#xff0c;适合不同的办公场景。企业微信的优势在于与微信的紧密集成&#xff0c;便于与客户沟通&#xff0c;适合需要频繁与外部联系的企业。它提供了基本的办公自动化功能&#xff0c;如团队协作、审批、日程等。 钉钉则在企业管理和团队协作方面功能更全面…

ATX电源插头的接口定义

主板20Pin接口定义 主板24Pin接口定义 CPU4Pin接口定义 4D口定义 显卡6Pin接口定义(6Pin PCI Express接口) 显卡62Pin接口定义(8Pin PCI Express接口) PCI-E供电接口 主要提供12V供电&#xff0c;其中PCI-E 6Pin供电有2组12V供电&#xff0c;而PCI-E 62Pin则有3组12V供电&#…

多线程:死锁

目录 死锁的条件 死锁的示例 死锁的预防与解决 死锁的检测 总结 死锁&#xff08;Deadlock&#xff09;是多线程或多进程环境中一种特定的状态&#xff0c;指的是两个或多个线程或进程在执行过程中&#xff0c;由于争夺资源而造成的一种相互等待的状态&#xff0c;导致它们…

微服务——配置管理

1.配置管理 微服务配置管理是指对微服务架构中各个服务的配置信息进行管理、更新、查询和审计等操作&#xff0c;以确保系统的正常运行和高效管理。例如&#xff0c;网关路由或某些业务配置在配置文件中写死了&#xff0c;每次修改都要重启服务。每个微服务都有很多重复的配置&…

6 门新兴语言,小众亦强大

​编码语言在塑造我们创建软件的方式方面起着至关重要的作用。多年来&#xff0c;我们观察到 Python&#xff0c;Java 和 C等成熟语言的流行。然而&#xff0c;如今一波新的编码语言浪潮已经出现&#xff0c;提出了创造性的解决方案&#xff0c;并推动了软件工程领域所能完成的…

【更新】全国地级市胡焕庸线、长江经济带、地域划分数据

本次数据是地级市的胡焕庸线、长江经济带、地域划分数据&#xff1a; 1、胡焕庸线是一条经典的地理分割线&#xff0c;它区分了中国人口分布的稠密区与稀疏区&#xff0c;东南部地区人口密集&#xff0c;西北部地区则较为稀疏 2、长江经济带是指沿长江流域分布的经济区域&…

聚焦Llama新场景和AR眼镜,扎克伯格用AI赋能元宇宙,Meta Connect 2024开发者大会即将开始

北京时间 9 月 26 日凌晨 1 点&#xff08;美国时间 9 月 25 日上午 10 点&#xff09;&#xff0c;Meta Connect 2024 年度开发者大会即将举行。 届时&#xff0c;Meta 首席执行官马克扎克伯格将聚焦 AI 和元宇宙&#xff0c;向大家分享 Meta 最新的产品和服务。HyperAI超神经…

微信小程序转化为uni-app项目

前言&#xff1a; 之前自己做一个uni-app的项目的时候前端需要实现一个比较复杂的动态tab和swiper切换的功能&#xff0c;但是由于自己前端抠脚的原因没有写出来&#xff0c;然后自己在网上搜索的时候发现了有个微信小程序里面的页面及极其的符合我的需求。那么问题来了我该如何…

《ESP32调试异常集锦》之:程序编译失败,提示undefined reference to `dedic_gpio_bundle_write‘

项目场景&#xff1a; 硬件&#xff1a;ESP32-LyraT-Mini V1.2开发板&#xff0c;使用的是ESP32-WROVER-E 模组。 程序&#xff1a;基于soft_i2c示例程序修改协议内容实现与TM1640通信测试 问题描述 编译失败&#xff0c;"full clean"后重新编译依旧失败。没有语法…