当前位置: 首页 > 编程日记 > 正文

Java多线程复习:1(进程和线程、并发和并行)

进程和线程

进程

  • 我们电脑中每一个运行着的程序都是一个进程,程序一旦运行就是进程。

  • 进程可以视为程序的一个实例,大部分程序可以同时运行多个实例进程(如:浏览器、记事本、画图等),也有的程序只能启动一个实例进程(如:360安全卫士等)

  • 我们电脑中每一个运行着的程序都是一个进程,程序一旦运行就是进程。

  • 进程是系统进行资源分配的独立实体, 且每个进程拥有独立的地址空间。

  • 一个进程可以拥有多个线程,每个线程使用其所属进程的栈空间。

线程

  • 一个进程可以分配到一个或者多个线程。

  • 一个线程就是一个指令流,将指令流中的一条条指令以一定顺序交给CPU执行。

  • Java中,线程作为最小的调度单位,进程作为资源分配的最小单位。在windows中进程是不活动的,只是作为线程的容器。

两者对比

进程基本上是相互独立的,而线程存在于进程之内,相当于进程的一个子集

进程拥有共享的资源,如内存空间等,供其内部线程共享

进程间的通信比较复杂

  • 同一台计算机之间的进程通信称为IPC
  • 不同计算机之间的进程通信要通过网络,并遵循一定的协议,如:HTTP协议

线程通信相对简单,因为它们共享进程内的内存,多个线程可以访问同一个共享变量

线程更轻量,线程上下文切换成本一般比进程上下文切换低

并发和并行

并发

单核 cpu 下,线程实际还是串行执行的。操作系统中有一个组件叫做任务调度器,将 CPU 的时间片(windows下时间片最小约为 15 毫秒)分给不同的程序使用,只是由于 CPU 在线程间(时间片很短)的切换非常快,人类感觉上程序是同时运行的
总结为一句话就是: 微观串行,宏观并行
一般将这种线程轮流使用 CPU的做法称为并发(concurrent)

CPU时间片
CPU时间片即CPU分配给各个程序的时间,每个线程被分配一个时间段,称作它的时间片
在宏观上:我们可以同时打开多个应用程序,每个程序并行不悖,同时运行。
在微观上:由于只有一个CPU,一次只能处理程序要求的一部分,如何处理公平,一种方法就是引入时间片,每个程序轮流执行。

如下图:
在这里插入图片描述

并行

多核CPU下,每个 核(core) 都可以调度运行线程,这时候线程可以是并行的。

在这里插入图片描述

两者对比

并发(concurrent)是同一时间应对(dealing with)多件事情的能力
并行(parallel)是同一时间动手做(doing)多件事情的能力

例子:
家庭主妇做饭、打扫卫生、给孩子喂奶,她一个人轮流交替做这多件事,这时就是并发
家庭主妇雇了个保姆,她们一起这些事,这时既有并发,也有并行(这时会产生竞争,例如锅只有一口,一个人用锅时,另一个人就得等待)
雇了3个保姆,一个专做饭、一个专打扫卫生、一个专喂奶,互不干扰,这时是并行

相关文章:

新年新技术:MongoDB 3.0

前一篇介绍了HTTP/2,这一篇简单介绍下3月3号发布的MongoDB 3.0。 What’s new in MongoDB 3.0? 新的存储引擎WiredTiger MongoDB 3.0的存储引擎是插件式的,默认为新增的WiredTiger。WiredTiger相比原来的MMAPv1引擎的优点: 文档级别的锁这个…

2021全国高校计算机能力挑战赛(初赛)C语言试题四

肯德基有一种奇怪的优惠券&#xff0c;卷上的金额都是整数。活动要求找到3张优惠券总额恰好是商品本身。 #include<stdio.h> int main() {int p,n,f0,temp0;scanf("%d %d",&p,&n);int a[10000];for (int i 0; i < n; i) {scanf("%d",&am…

Substance Painter实时角色制作视频教程

持续时间2h 包含项目文件 1920X1080 MP4 语言&#xff1a;英语中文字幕&#xff08;机译&#xff09; 大小&#xff1a;5.63G Substance Painter实时角色制作视频教程 信息: 本教程旨在为一个实时角色解决实体画师中纹理化现实人类皮肤的奥秘&#xff01; 在这个2小时的全叙述…

Java多线程复习:2(线程的创建和使用)

线程的创建和使用 方法一&#xff0c;直接使用Thread import lombok.extern.slf4j.Slf4j; /*** author&#xff1a;小关同学爱吃汉堡* date: 2021/4/1 23:27*/ Slf4j(topic "c.Test1") public class Test1 {public static void main(String[] args) {//以匿名内部…

Apache htaccess 重写假设文件存在!

假设文件 data/cache/index.html 存在。那么才重写。否则使用默认的MVC 重写。by default.fufoxmail.com RewriteEngine on RewriteCond %{DOCUMENT_ROOT}/data/cache/list_1.html -f RewriteRule ^game\/?$ data/cache/list_1.html [L] RewriteCond %{REQUEST_FILENAME} !-f …

Xamarin只言片语系列

把自己写xamarin中的一些知识点记录下来&#xff0c;分享给大家&#xff0c;欢迎指正。Xamarin只言片语1——Xamarin下的弹框Xamarin只言片语2——Xamarin下的web api操作更新中……

2021全国高校计算机能力挑战赛(初赛)C语言

3-2空间中有N个顶点&#xff08;顶点坐标用x,y,z表示&#xff09;&#xff0c;从中找出能构成三角形图形的最大面积&#xff0c;输出该面积。 #include<stdio.h> #include<math.h> int main() {int n,m0;double a,b,c,p,res[1000],s[1000][3];scanf("%d"…

藤摇椅游戏道具制作全流程讲解视频教程

藤摇杆|一个完整的游戏资产工作流程 MP4 |视频:h264&#xff0c;1280720 |音频:AAC&#xff0c;44.1 KHz&#xff0c;2 Ch 含工程素材 语言&#xff1a;英语中文字幕&#xff08;根据原英文字幕机译更准确&#xff09;原英文字幕 |时长:25节课(9h 57m) |大小:8.35 GB 通过模拟游…

SpringBoot复习:2(@Configuration注解)

Configuration注解 Configuration注解的作用是代替以前我们使用的xml配置文件&#xff0c;被注解的类就是配置类&#xff0c;其内部包含有一个或多个被Bean注解的方法&#xff0c;这些方法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类…

C/C++中constkeyword

今天在做一个趋势笔试题的时候。才让我有了系统把constkeyword好好总结一下的冲动&#xff0c;由于这个关键词大大小小好多地方都出现过&#xff0c;出现频率很高&#xff0c;而每次仅仅是简短的把答案看了一下&#xff0c;没有真正将其整个使用方法弄透&#xff0c;立即要找工…

hdu5185 dp:和为n且满足后一项是前一项或者+1的数列个数

其实是很裸的dp&#xff0c;竟然放在第四题 dp[i][j]表示当前放j和为i的方案数 dp[0][0]1; dp[i][j]dp[i-j][j-1]dp[i-j][j]; 1 #include<stdio.h>2 #include<string.h>3 #include<math.h>4 #include<algorithm>5 using namespace std;6 int dp[50005]…

2021全国高校计算机能力挑战赛(决赛)Java

计算奖品价格标准差 import java.util.*;public class Main {public static void main(String[] args) {Scanner in new Scanner(System.in);int n in.nextInt();float sum0;int total_n0;int[] numnew int[10];float[] prinew float[10];for (int i 0; i <n ; i) {num[i…

Python训练营2021:构建8个真实世界的Python项目

时长:19h 27m |视频:. MP4&#xff0c;1280720 30 fps |音频:AAC&#xff0c;44.1 kHz&#xff0c;2ch |大小:9.54 GB 语言&#xff1a;英语中英文字幕 机译 从Python Web开发的初学者到专家:学习使用SQLite、Tkinter开发真实的Django应用程序 你会学到: 了解如何使用像Djang…

SpringBoot复习:3(@Conditional)

Conditional 条件装配&#xff1a;满足Conditional指定的条件时&#xff0c;则进行组件注入 Conditional注解下面包含许多注解&#xff0c;如下图&#xff1a; 这些注解各有各的功能&#xff0c;这里挑几个来记录一下。 ConditionalOnBean注解 个人理解&#xff1a;当该注…

HDU——1106排序(istringstream的使用、STLvector练习)

排序 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 46057 Accepted Submission(s): 13221 Problem Description输入一行数字&#xff0c;如果我们把这行数字中的‘5’都看成空格&#xff0c;那么就得到一行用…

AssertValid函数学习

转自http://tsitao.blog.163.com/blog/static/29795822006914105840496/ VC的调试中&#xff0c;AssertValid和Dump函数的应用 CObject::AssertValid 成员函数提供对对象内部状态的运行时检查。虽然从 CObject 派生类时不须要重写 AssertValid&#xff0c;但能够通过重写使您的…

数值分析第一次作业-牛顿迭代法求解二元非线性方程组

1、问题 求解如下方程组: 2、算法 3、代码实现 # *coding:utf-8 * import math delta 5e-6 ;eps 1e-6 x0 1;y0 1 er 1;k 0 def z(x,y):return math.sin(x*y)*math.exp(-0.1*(x**2y**2x*y2*x)) def f(x,y):return y*math.cos(x*y)-0.1*(2*xy2)*math.sin(x*y) def g(x,y…

Maya制作风格化的女性跑步动画学习教程

时长:2h 11m |视频:. MP4 1280720&#xff0c;30 fps(r) |音频:AAC&#xff0c;48000 Hz&#xff0c;2ch |大小解压后:1.56 GB 含参考素材 流派:电子学习|语言&#xff1a;英语中英文字幕&#xff08;根据原英文字幕机译更准确&#xff09; 通过在Autodesk Maya中提供专业外观…

安卓手机抓包实战

最近因为要做一个项目&#xff0c;所以需要对手机给家电发送的请求进行抓取&#xff0c;于是上网找了许多教程&#xff0c;但都不怎么理想&#xff0c;最终经过两个晚上的艰辛奋斗&#xff0c;终于让我找到了方法抓取到了手机发送的请求&#xff0c;写一篇博客记录一下这个过程…

导入drupal中文语言包

http://lugir.com/book/export/html/399转载于:https://www.cnblogs.com/qinqiu/p/5174062.html

JavaScript引擎大战:Google提出StrongMode和SoundScript议案,增强V8性能

JavaScript 引擎性能大战硝烟迷漫&#xff0c;Chrome V8 引擎团队宣布了一个新的计划&#xff0c;在这个计划里他们介绍了两个新的虚拟机概念&#xff1a;强化模式&#xff08;StrongMode&#xff09;和强化脚本&#xff08;StrongScript&#xff09;。\\强化模式是 ES5 严格模…

数值分析第三次作业-常微分方程的数值解法

一、欧拉方法 二、修正的欧拉方法 2.1.梯形公式 将问题&#xff08;*&#xff09;的解表成积分形式&#xff0c;用数值积分方法离散化。例如&#xff0c;对微分方程

SYNCHRO 4D可视化调度学习教程 SYNCHRO 4D: Visual Scheduling

MP4 |视频:h264&#xff0c;1280720 |音频:AAC&#xff0c;44.1 KHz&#xff0c;2 Ch 技能水平:初级|流派:电子学习|语言&#xff1a;英语中英文字幕&#xff08;根据原英文字幕机译更准确&#xff09; |时长:3h 14m |大小:1.36 GB 含课程练习文件 课程获取&#xff1a;SYNCHR…

SpringBoot复习:4(@ImportResource)

ImportResource注解 作用&#xff1a;这个注解可以用来导入Spring的配置文件&#xff08;bean.xml文件&#xff09;。 适用场景&#xff1a; 可以试想一下这样一个场景&#xff0c;老板要你将原来的Spring项目改成SpringBoot项目&#xff0c;原项目底下有一大堆的bean.xml文件…

YTU 2723: 默认参数--求圆的面积

2723: 默认参数--求圆的面积 时间限制: 1 Sec 内存限制: 128 MB提交: 206 解决: 150题目描述 根据半径r求圆的面积, 如果不指定小数位数,输出结果默认保留两位小数。 部分代码已给定如下&#xff0c;只需要提交缺失的代码。 #include <iostream> #include <iomanip&…

jmeter内存溢出处理方式记录

方法一&#xff1a; 使用jmeter进行压力测试时 遇到一段时间后报内存溢出outfmenmory错误&#xff0c;导致jmeter卡死了&#xff0c;先尝试在jmeter.bat中增加了JVM_ARGS"- Xmx2048m -Xms2048m -Xmn256m -XX:PermSize128m -Xss256k"&#xff0c;但结果运行时间增加了…

支持向量机学习笔记1

1、支持向量机是一种二类分类模型。它的模型基本定义是特征空间上间隔最大的线性分类器。 2、核函数的引入&#xff0c;使得支持向量机可以进行非线性分类。 3、支持向量机也可以完成多类别分类&#xff08;将在后面介绍&#xff09; 4、支持向量机的学习策略为间隔最大化&a…

C4D入门学习教程

MP4 |视频:AVC&#xff0c;1280720 30 fps |音频:AAC&#xff0c;48 KHz&#xff0c;2 Ch |时长:2h 12m 语言&#xff1a;英语中英文字幕&#xff08;根据原英文字幕机译更准确&#xff09;|大小解压后:560M C4D是一个有抱负的运动图形艺术家和设计师的重要工具。借助C4D&#…

SpringBoot复习:5(配置绑定)

配置绑定 在SpringBoot中我们如何读取到properties文件中的内容&#xff0c;并且把它封装到JavaBean中&#xff0c;以供随时使用呢&#xff1f; 我们可以使用以下两种方式来实现。 方法一&#xff1a;ConfigurationPropertiesComponent 第一种方法&#xff0c;我们可以使用C…

是男人就下100层【第五层】——2048游戏从源代码到公布市场

上一篇《是男人就下100层【第五层】——换肤版2048游戏》中阳光小强对2048游戏用自己的方式进行了实现&#xff0c;并分享了核心源码&#xff0c;这一篇阳光小强打算将该项目的全部源码公开并结合这个实例在这篇文章中介绍一下怎样加入广告和实现分享功能。终于执行效果例如以下…