【Java】何为并发?

一.认识并发几个关键成员

1.计算机的核⼼是CPU,它承担了所有的计算任务。它就像⼀座⼯⼚,时刻在运⾏

2.假定⼯⼚的电⼒有限,⼀次只能供给⼀个⻋间使⽤。也就是说,⼀个⻋间开⼯的时 候,其他⻋间都必须停⼯。背后的含义就是,单个 CPU ⼀次只能运⾏⼀个任务

3.进程就好⽐⼯⼚的⻋间,它代表 CPU 所能处理的单个任务。任⼀时刻,CPU 总 是运⾏⼀个 进程,其他 进程 处于⾮运⾏状态

4..⼀个⻋间⾥,可以有很多⼯⼈。他们协同完成⼀个任务

5.线程 就好⽐⻋间⾥的⼯⼈。⼀个 进程 可以包括多个 线程

6.⻋间的空间是⼯⼈们共享的,⽐如许多房间是每个⼯⼈都可以进出的。这象征⼀个 进程 的内存空间是共享的,每个 线程 都可以使⽤这些共享内存

7.可是,每间房间的⼤⼩不同,有些房间最多只能容纳⼀个⼈,⽐如厕所。⾥⾯有⼈ 的时候,其他⼈就不能进去了。这代表⼀个 线程 使⽤某些共享内存时,其他 线程 必须等它结束,才能使⽤这⼀块内存。

8.⼀个防⽌他⼈进⼊的简单⽅法,就是⻔⼝加⼀把锁。先到的⼈锁上⻔,后到的⼈看 到上锁,就在⻔⼝排队,等锁打开再进去。这就叫 "互斥锁"(Mutual exclusion, 缩写 Mutex),防⽌多个 线程 同时读写某⼀块内存区域

9.还有些房间,可以同时容纳 n 个⼈,⽐如厨房。也就是说,如果⼈数⼤于n,多出 来的⼈只能在外⾯等着。这好⽐某些内存区域,只能供给固定数⽬的 线程 使⽤

10.这时的解决⽅法,就是在⻔⼝挂 n 把钥匙。进去的⼈就取⼀把钥匙,出来时再把 钥匙挂回原处。后到的⼈发现钥匙架空了,就知道必须在⻔⼝排队等着了。这种做 法叫做 "信号量"(Semaphore),⽤来保证多个 线程 不会互相冲突

不难看出,Mutex (互斥锁) 是 Semaphore (信号量)的⼀种特殊情况(n=1时)。也 就是说,完全可以⽤后者替代前者。但是,因为 mutex 较为简单,且效率⾼,所以 在必须保证资源独占的情况下,还是采⽤这种设计

11.操作系统的设计,因此可以归结为三点:

(1)以多 进程 形式,允许多个任务同 时运⾏;

(2)以多 线程 形式,允许单个任务分成不同的部分运⾏;

(3)提供协 调机制,⼀⽅⾯防⽌ 进程 之间和 线程 之间产⽣冲突,另⼀⽅⾯允许 进程 之间和 线           程 之间共享资源

相信看过这之后就了解了并发编程⼤概要关注的⼀些内容了,在后续的⽂章中,希 望⼤家牢记,你是⼀个⼯⼚只能有⼀个⻋间运⾏的负责⼈,如何让⼯⼈⾼效的⼲活 且不出差错,也不起冲突,你就是合格的负责⼈.....

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值