Java程序设计教程(第2版)课后习题及答案11课后习题.docx
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《Java程序设计教程(第2版)课后习题及答案11课后习题.docx》由会员分享,可在线阅读,更多相关《Java程序设计教程(第2版)课后习题及答案11课后习题.docx(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第11章课后习题参考答案1 .解释下列名词术语。进程、线程、状态、阻塞、优先级、同步、死锁、守护、线程安全进程:进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行 资源分配和调度的基本单位,是操作系统结构的基础。线程:线程是操作系统能够进行运算调度的最小单位,被包含在进程之中,是进程中的实际 运作单位。状态:状态用来表示线程所处的情况。线程状态有“新建”、“可运行”、“运行”、“阻 塞”、“死亡”等。阻塞:阻塞状态是指线程因为某种原因放弃CPU使用权,暂时停止运行。直到满足某个触 发条件又使线程进入就绪状态,才有机会转到运行状态。优先级:在操作系统中,线程可以划分
2、优先级,线程优先级越高,获得CPU时间片的概率就 越大,但线程优先级的高低与线程的执行顺序并没有必然联系,优先级低的线程也有可能比优先级高 的线程先执行。同步:即当有一个线程在对内存进行操作时,其他线程都不可以对这个内存地址进行操作, 直到该线程完成操作,其他线程才能对该内存地址进行操作,而其他线程又处于等待状态。死锁:当两个线程被阻塞,每个线程在等待另一个线程时就发生死锁。守护:实际的意思是把一个线程标记为“守护线程”,就是当他是一个“后台线程” or “内 部线程”。线程安全:线程安全是多线程编程时的计算机程序代码中的一个概念。在拥有共享数据的多 条线程并行执行的程序中,线程安全的代码会通
3、过同步机制保证各个线程都可以正常且正确的执 行,不会出现数据污染等意外情况。2 .线程有哪几种状态?答:线程在生命期中可能经历五种状态:新建(New)、就绪或者可运行(Ready or Runnable 运行(Running)、阻塞(Blocked)、死亡(Dead)。3 .简述Java线程调度的原理。答:所有的Java虚拟机都有一个线程调度器,用来确定那个时刻运行那个线程。主要包含 两种:抢占式线程调度器和协作式线程调度器。(1) .抢占式线程调度,每个线程可能会有自己的优先级,但是优先及并不意味着高优先级的 线程一定会被调度,而是由cup随机的选择,所谓抢占式的线程调度,就是说一个线程在执
4、行自 己的任务时,虽然任务还没有执行完,但是cpu会迫使它暂停,让其它线程占有cpu的使用权。(2) .协作式线程调度,每个线程可以有自己的优先级,但优先级并不意味着高优先级的线程 一定会被最先调度,而是由cpu时机选择的,所谓协作式的线程调度,就是说一个线程在执行自 己的任务时,不允许被中途打断,一定等当前线程将任务执行完毕后才会释放对cpu的占有,其 它线程才可以抢占该cpu。4何谓线程同步?何谓线程间通信?答:同步就是使不同动作协调有序。线程同步指的是当程序中有多个线程,假设它们同时访 问同一个变量时,一些线程读数据,一些线程写数据,可能会出现数据读写错误,因此需要对这 些线程的数据访问
5、操作进行控制,使之协调有序,避免数据访问操作出错。线程间通讯是多个线程在操作同一个资源时,多个线程之间不断切换执行时所发出的信号。5 .分析下面程序的执行结果。 class Sync extends Thread public synchronized void produceProduct() if (productCount 0)System.out.println(Thread.currentThread().getName() + ”:开始消费第 + productCount + 个产品”);productCount-;notify();else /等待try (wait(); cat
6、ch (InterruptedException e) e.printStackTrace();class Producer extends Thread 生产者private Clerk clerk;public Producer(Clerk clerk) this.clerk = clerk;)Overridepublic void run() System.out.println(getName() + ”:开始生产产品”);while (true) try ( Thread.sleep(lO); catch (InterruptedException e) e.printStackTr
7、ace();clerk. produceProduct();)class Consumer extends Thread 消费者private Clerk clerk;public Consumer(Clerk clerk) this.clerk = clerk;Overridepublic void run() System.out.println(getName() + ” :开始消费产品”);while (true) try (Thread.sleep(20); catch (InterruptedException e) e.printStackTrace();clerk.consum
8、eProduct();public class ProductTest public static void main(String args) Clerk clerk = new Clerk();Producer pl = new Producer(clerk);pl.setName(生产者);Consumer cl = new Consumer(clerk); cLsetName(”消费者);Consumer c2 = new Consumer(clerk);c2.setName(”消费者 2)pl.startQ; cl.start(); c2.start();StringBuffer l
9、etter;public Sync(StringBuffer letter)this.letter = letter; public void run()synchronized(letter)for (int I = 1;I = 100;+I)System.out.print(letter);System.out.printIn();char temp = letter.charAt(0);+temp;letter.setCharAt(0,temp);static void main(String args) publicStringBuffer sb=new StringBuffer(HA
10、n);newnewnew )Sync(sb).start();Sync(sb).start();Sync(sb) .start ();答:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB BBBBBBBBBBBBBBBBBBBccccccccccccccccccccccccccccc
11、cccccccccccccccccccccccccccccccccccccccccccccccccccc ccccccccccccccccccc由于使用synchronized关键字,程序的输出不会出现ABC字母的嵌套。6 .分析下面的程序是否会形成死锁,谈谈理由。package exercise;public class Exll 6public static void main(String args)DeadlockRisk dead =new DeadlockRisk();classMyThread4MyThread4 MyThread4MyThread4 tl.start () t2
12、.start () t3.start () t4start()tl t2 t3 t4newnewnewnewMyThread4(dead,MyThread4(dead,MyThread4(dead,MyThread4(dead,MyThread4 extends Thread1,3,5,7,2);4);6);8);private DeadlockRisk dead;private int a, b;MyThread4(DeadlockRisk dead, int a, int b)this.dead = dead;this , aa;this.b = b;Override public voi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 程序设计 教程 课后 习题 答案 11
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内