第11章 多线程-2
- 格式:ppt
- 大小:398.50 KB
- 文档页数:22


习题集第二章 参考答案
一、 单项选择题
1、 D
2、 D
3、 B
4、 D
5、 C
6、 B
7、 A 8、 B
9、 C
10、 B
11、 C
12、 B
13、 D
14、 C 15、 D
16、 A
17、 B
18、 A
19、 B
20、 D
21、 C 22、 D
23、 B
24、 D
25、
D
26、 B
27、 C
28、 B 29、 A
30、 B
31、 A
32、 B
33、 A
34、 C
二、 填空题
1 进程
2 就绪 执行 阻塞
3 等待的事件发生的
4 进程控制块
5 进程控制块(或PCB)
6 99 1 100
7 就绪
8 静止阻塞
9 阻塞 就绪 10 共享存储器,管道通信,消息传递
11 信号量
12 [1-n,1]
13 进程控制块(PCB)
14 同步 互斥
信号量
15 wait(mutex)
signal(mutex) 16 顺序性,封闭性,可再现性
17 并发
18 临界区
19 wait, signal
20 1,(1-n)或-(n-1)
21 7
22 wait signal
23 阻塞 就绪
三、 判断题×√
1×
2√
3×
4×
5× 6×
7√
8×
9×
10√ 11√
12×
13√
四、 简答题
1、解释进程的顺序性和并发性。
答:进程的顺序性是指进程在顺序的处理器上的执行是严格按序的,只有在前一个操作结束后才能开始后继操作。
进程并发性是指一组进程可以轮流占用处理器,一个进程的工作没有全部完成之前,另一个进程就可开始工作。把这样的一组进程看做是同时执行的,把可同时执行的进程称为并发进程。
所以,进程的顺序性是对每个进程而言的,进程的并发性是对一组具有顺序性的进程而言的。一组进程并发执行时各进程轮流占用处理器交替执行,占用处理器的进程按各自确定的顺序依次执行指令。
Java多线程操作局部变量与全局变量
在这篇⽂章⾥,我们⾸先阐述什么是同步,不同步有什么问题,然后讨论可以采取哪些措施控制同步,接下来我们会仿照回顾⽹络通信时那样,构建⼀个服务器端的“线程池”,JDK为我们提供了⼀个很⼤的concurrent⼯具包,最后我们会对⾥⾯的内容进⾏探索。
为什么要线程同步?
说到线程同步,⼤部分情况下, 我们是在针对“单对象多线程”的情况进⾏讨论,⼀般会将其分成两部分,⼀部分是关于“共享变量”,⼀部分关于“执⾏步骤”。
共享变量
当我们在线程对象(Runnable)中定义了全局变量,run⽅法会修改该变量时,如果有多个线程同时使⽤该线程对象,那么就会造成全局变量的值被同时修改,造成错误。我们来看下⾯的代码:
1 class MyRunner implements Runnable
2 {
3 public int sum = 0;
4
5 public void run()
6 {
7 System.out.println(Thread.currentThread().getName() + " Start.");
8 for (int i = 1; i <= 100; i++)
9 {
10 sum += i;
11 }
12 try {
13 Thread.sleep(500);
14 } catch (InterruptedException e) {
15 e.printStackTrace();
16 }
17 System.out.println(Thread.currentThread().getName() + " --- The value of sum is " + sum);
18 System.out.println(Thread.currentThread().getName() + " End.");
19 }
20 }
21
22
23 private static void sharedVaribleTest() throws InterruptedException
26、进程的概念:一般可以在同一时间内执行多个程序的操作系统都有进程的概念。
一个进程就是一个执行中的程序,而每一个进程都有自己独立的一块内存空间、一组系统资源。在进程的概念中,每一个进程的内部数据和状态都是完全独立的
27、线程的概念:多线程指的是在单个程序中可以同时运行多个不同的线程,执行不同的任务。线程机制支持并发程序设计,在多处理器系统上,它也能保证真正的并行处理。多线程意味着一个程序的多行语句可以看上去几乎在同一时间内同时运行。同类的多个线程共享一块内存空间和一组系统资源。
28、进程与线程的关系:线程与进程相似,都是是一段完成某个特定功能的代码,是程序中单个顺序的流控制。但与进程不同的是,同类的多个线程共享一块内存空间和一组系统资源,所以系统在各个线程之间切换时,资源占用要比进程小得多,正因如此,线程也被称为轻量级进程。一个进程中可以包含多个线程
29、多线程和多进程相比,线程之间的通信比进程之间的通信更容易。
对不同进程来说,它们具有独立的数据空间,要进行数据的传递只能通过通信的方式进 行,这种方式不仅费时,而且很不方便。但是对于多线程之间可以直接共享数据,比如最简单的方式就是共享全局变量。但是必须注意同步
30、多线程同步:所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回,同时其它线程也不能调用这个方法。在多线程编程里面,一些敏感数据不允许被多个线程同时访问,此时就使用同步访问技术,保证数据在任何时刻,最多有一个线程访问,以保证数据的完整性
31、 线程同步的方式和机制:(1)临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。在任意时刻只允许一个线程对共享资源进行访问,如果有多个线程试图访问公共资源,那么在有一个线程进入后,其他试图访问公共资源的线程将被挂起,并一直等到进入临界区的线程离开,临界区在被释放后,其他线程才可以抢占。(2)互斥量:采用互斥对象机制。 只有拥有互斥对象的线程才有访问公共资源的权限,因为互斥对象只有一个,所以能保证公共资源不会同时被多个线程访问。互斥不仅能实现同一应用程序的公共资源安全共享,还能实现不同应用程序的公共资源安全共享。(3)信号量:它允许多个线程在同一时刻访问同一资源,但是需要限制在同一时刻访问此资源的最大线程数目(4)事 件:通过通知操作的方式来保持线程的同步,还可以方便实现对多个线程的优先级比较的操作
第30卷第24期计算机工程2004年12Jq
V01.30Na24ComputerEngineeringDecember2004
·开发研究与设计技术·文章编号:IIIIlI卜_3428(2004)24圳177一13文献标识码:A中图分类号tTP277
支持多线程监控的外置Watchdog监控组件的设计
郑培余‘,李汉斌j。姚绍文’
(1.云南大学信息学院计算机科学与技术系,昆明650091;2.云南大学网络巾心,昆明650091;3.云南大学软件学院,昆明650091)
攮蔓:Windows系列一【:控f翕.1:荩于多线程的实时控制系统得到了口益广泛的应HJ,为减少系统的故障停机时间,该文设计井实现了1‘个恭=]:ActivcXCOM甜I件技术,支持对多个多线程客户进程进行同时监控的外嚣watclldogj敬控圣ltfl=。在智能车辆记录与号牌识别系统等应用巾,提高了系统的t叮锫性,应flJ效果良好。,美t嗣:Watchdog;多线程;组件
DesignofoutsideWatchdogMonitorComponent
SupportingMUltithreadSurveillance
ZHENGPeiyu‘,LIHanbin2,YAOShaowen3
flCornputcrScicnccand,Iechnok’gyDcpt.of’Informati(wlInstitute.YunnanUniversity.Kunming65009l;2.NePA’ork【’cDtl2r,YI.ii)nal'lIhlivcrsil)j.Kunmin965009l:3.Softwareinstitute,YurlllarlLJniVcnity.Kunmin9650091)IAbslrac!lllhispapcl’designs1111(.IrealizesoutsidewatchdogmonitorActiveXsoftwarecomponentsuppo=’iingsimultaneoussurveillanccof