Java并发编程基础教程—并发基础(一)

并发编程

1.进程与线程
进程

  • 程序由指令和数据组成,但这些指令需要运行,数据要读写,就必须将指令加载至CPU,数据加载至内存.在指令运行过程中还需要用到磁盘,网络等设备.进程就是用来加载指令,管理内存,管理IO的.

  • 当一个程序被运行,从磁盘加载这个程序的代码至内存,这时就开启了一个进程.

  • 进程就可以视为程序的一个实例.大部分程序可以同时运行多个实例程序,有的程序只能启动一个实例进程.

线程

  • 一个进程之内可以分为一到多个线程

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

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

两者对比

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

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

  • 进程间通信较为复杂

  • 同一台计算机的进程通信称为IPC(Inter-process-communication)

  • 不同计算机之间的进程通信,需要通过网络,共遵循共同的协议,例如HTTP

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

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

2.并行与并发

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

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

应用

应用之异步调用(案例1)

从方法调用的角度来讲,如果

  • 需要等待结果返回,才能继续进行就是同步

  • 不需要等待结果返回,就继续运行就是异步

注意: 同步在多线程中还有另外一层意思,就是让多个线程步调一致

  1. 设计

多线程可以让方法执行变为异步的,比如读取磁盘文件时,假设读取操作花费了5秒,如果没有线程调度机制,这5秒钟调用者什么都做不了,其他代码都得暂停

  1. 结论

*比如在项目中,视频文件需要转换格式等操作比较费时时,这时开一个新线程处理视频转换,避免阻塞主线程

*tomcat得异步servlet也是类似得目的,让用户线程处理耗时较长得操作,避免阻塞tomcat得工作线程

*UI程序中.开线程进行其他操作,避免阻塞UI线程

应用之提高效率

充分利用多核CPU得优势,提高运行效率

如果时串行执行,那么总共花费得时间是10+11+9+1 = 31ms

但如果是四核CPU,各个核心分别使用线程1计算1,线程2计算2,线程3计算3 ,那么三个线程是并行得,花费时间只取决于最长得那个线程运行得时间,即11ms+1ms(汇总)=12ms

注意

需要在多核CPU下才能提高效率,单核仍然是轮流执行

结论:

  1. 单核CPU下,多线程不能实际提高程序运行得效率,只是为了能够在不同得人物之间切换,不同线程轮流使用CPU,不至于一个线程总占用cpu,别得线程没法干活

  2. 多核CPU可以并行跑多个线程,但能否提高运行效率还是要看情况得

  • 有些任务,经过精心设计,将任务拆分,并发执行,当然可以提高程序得运行效率.但不是所有计算任务都能拆分

  • 也不是所有任务都需要拆分,任务得目的如果不同,谈拆分和效率没啥意义

  1. IO操作不占用CPU,只是我们一般拷贝文件使用的是[阻塞IO],这时相当于线程虽然不用CPU,但需要一值等待IO结束,没能充分利用线程,所以才有后面得[非阻塞IO]和[异步IO]优化
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,128评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,316评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,737评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,283评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,384评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,458评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,467评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,251评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,688评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,980评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,155评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,818评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,492评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,142评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,382评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,020评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,044评论 2 352