您的位置: 网站首页 > 程序开发 > Java程序设计 > 第9章 多线程 > 【9.8 练 习 题】

9.8 练 习 题

 

9.8     

1填空题

1)一个进程就是一个执行中的              ,而每一个进程都有自己独立的一块

                   

2)同类的多个线程是          一块内存空间和一组系统资源,而线程本身的数据通常只有微处理器的寄存器数据,以及一个供程序执行时使用的堆栈。

3Java的线程是通过Java的软件包java.lang中定义的          类来实现的。

4)一个线程从创建到消亡的整个生命周期中,总是处于下面5个状态中的某个状态:

                                                 

5Java使用          关键字控制对共享信息的并发访问,实现线程同步。

2选择题

1)创建Thread对象后,在启动这个线程之前,这个线程处于创建状态,它仅仅是一个空的线程对象,系统不为它分配资源。处于这种状态时只能      该线程,调用其他方法都会失败并且会引起非法状态处理。

A.运行                      B.启动或终止            C.终止               D.阻塞

2Thread类提供了一个静态方法      可以用于返回正在运行的线程体引用。

AcurrentThread( )                                         BactiveCount( )        

Cenumerate( )                                               Dcurrent( )

3)下列关于进程的描述正确的是     

A.一个进程就是一个执行中的程序,所有进程共享系统的内存空间和资源

B.系统在产生一个进程或者在各个进程之间切换时,负担要比线程小得多

C.进程或线程之间不需要进行数据交换

D.系统中线程个数比进程个数多得多

4)线程已获得某个对象的锁,若该线程调用      方法,则退出所占用的处理器,打开该对象的锁,转为阻塞状态,并允许其他同步语句获得对象锁。

Anotify( )                 BnotifyAll( )             Cwait( )             Dstart( )

5)下面关于死锁的描述,不正确的是     

A.使用Java 线程的同步不会导致死锁现象

B.线程间因为相互等待对方的资源而不能继续执行的情况称为死锁

C.持有一个锁并试图获取另一个锁时,就有死锁的危险

D.死锁是由资源的无序使用而带来的

3问答题

1Java为什么要引入线程机制?线程、进程和程序之间的关系是怎样的?

2)创建线程的两种方法是什么?

3)什么是死锁?

4)多线程技术与进程技术相比有什么优越性?

4上机操作题

1)实现读者-写者问题的同步。问题描述如下:对共享资源的读/写操作;任一时刻写者最多只允许一个,而读者则允许多个;读和写不能同时进行,而多个读者同时读则是允许的。

2)设有五位哲学家,共享一张放有五把椅子的桌子,每人分得一把椅子。但是,但是桌子上总共只有5支筷子,在每人两边各放一支。哲学家们在饥饿是才试图分两次从两边拾起筷子就餐。

哲学家要有两支筷子才能就餐。

如果筷子已在其他人手上,则该哲学家就要等到他人吃完后才拿筷子。

任一哲学家在自己未拿到两支筷子吃饭之前,决不放下自己手中的筷子。

最多4个人可以去拿其左边的筷子

拿齐2支筷子后才能进餐

奇数哲学家先拿左边筷子,偶数哲学家先拿右边的筷子

要求至少有一位哲学家能吃到饭,也就是不要让哲学家们都吃不到饭,全部饿死。