java程序中单方法接口通常是,《Java语言程序设计》考试练习题(带答案)四

41528d3028836879cd698677c3999917.gif《Java语言程序设计》考试练习题(带答案)四

《Java语言程序设计基础教程》 练习思考题参考答案 第7章 多线程 7.1单项选择题 1、 Java语言具有许多优点和特点,下列选项中,哪个反映了Java程序并行机制的特点?( ) A、安全性B、多线程 C、跨平台D、可移植 解答:B 2、 Runnable接口中的抽象方法是( )。 A、startB、stop C、yieldD、run 解答:D 3、 有以下程序段 (很难) class MyThread extends Thread { public static void main(String args[]) { MyThread t = new MyThread(); MyThread s = new MyThread(); t.start(); System.out.print(“one.“); s.start(); System.out.print(“two.“); } public void run() { System.out.print(“Thread“); } } 则下面正确的选项是( ) A、编译失败 B、程序运行结果为:one.Threadtwo.Thread C、程序运行结果是:one.two.ThreaThread D、程序运行结果不确定 解答:D 5、 作为类中新线程的开始点,线程的执行是从下面哪个方法开始的。( ) A、public void start() B、public void run() C、public void int() D、public static void main(String args[]) 解答:A 6、Java中用于给对象加“互斥锁”标记的关键字是。( ) A、synchronized B、serialize C、transient D、static 解答:A 7.以下哪个方法用于定义线程的执行体? ( C ) A、 start() B、init() C、run() D、synchronized() 8.以下哪个关键字可以用来为对象加互斥锁?( D ) A、transient B、static C、 serialize D、synchronized 7.2填空题 7.3简答题 1、多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么? 多线程有两种实现方法,分别是继承Thread类与实现Runnable接口。用Thread类的子类创建线程对象,也就是从Thread类继承。实现Runnable接口,用Thread类直接创建线程对象。 同步的实现方面有两种,分别是synchronized,wait与notify。 2、 创建一个新线程的方法,可以使用下面哪2种 ( ) A、继承java.lang.Thread类,并且重载run方法。 B、继承java.lang.Runnable类,并且重载start方法。 C、实现java.lang.thread类,实现run方法。 D、实现java.lang.Runnable接口,实现run方法。 E、实现java.lang.Thread类,实现start方法。 解答:A,D 3、 线程在它的一个完整的生命周期中有哪4种状态? 解答1: 线程在它的一个完整的生命周期中通常要经历如下的4种状态:1. 创建状态(new Thread) 2. 可运行状态( Runnable ) 3. 不可运行状态(Not Runnable)4. 死亡状态(Dead) 解答2: 第一是创建状态。在生成线程对象,并没有调用该对象的start方法,这是线程处于创建状态。 第二是就绪状态。当调用了线程对象的start方法之后,该线程就进入了就绪状态,但是此时线程调度程序还没有把该线程设置为当前线程,此时处于就绪状态。在线程运行之后,从等待或者睡眠中回来之后,也会处于就绪状态。 第三是运行状态。线程调度程序将处于就绪状态的线程设置为当前线程,此时线程就进入了运行状态,开始运行run函数当中的代码。 第四是阻塞状态。线程正在运行的时候,被暂停,通常是为了等待某个时间的发生(比如说某项资源就绪)之后再继续运行。sleep,suspend,wait等方法都可以导致线程阻塞。 第五是死亡状态。如果一个线程的run方法执行结束或者调用stop方法后,该线程就会死亡。对于已经死亡的线程,无法再使用start方法令其进入就绪。 4、线程在什么状态时,调用isAlive()方法返回的值是false。 5、建立线程有哪两种方法? 解答:多线程有两种实现方法,分别是继承Thread类与实现Runnable接口。 6、怎样设置线程的优先级? 7、调用Thread类的什么方法可以启动一个线程?直接调用Thread类的run()方法可以启动一个线程吗? 解答:线程调用start()方法将启动线程,从新建状态进入就绪队列排队。不能直接调用Thread类的run()方法可以启动一个线程,我们调用了Thread的run()方法,它的行为就会和普通的方法调用一样。 8、Thread 类中的start() 和 run() 方法有什么区别? 解答:这个问题经常被问到,但还是能从此区分出面试者对Java线程模型的理解程度。start()方法被用来启动新创建的线程,而且start()内部调用了run()方法,这和直接调用run()方法的效果不一样。当你调用run()方法的时候,只会是在原来的线程中调用,没有新的线程启动,start()方法才会启动新线程。 9、进程和线程的区别? 解答:进程=执行中的程序,每个进程都有自己独立的一块内存、一组系统资源。每一个进程的内部数据和状态都是完全独立的。 线程=进程中单个顺序的流控制,同类的多个线程共享一块内存、一组系统资源。线程的运行开销很小。 一个线程是进程的一个执行流程,一个进程可以同时包含多个线程。 10、现在有T1、T2、T3三个线程,你怎样保证T2在T1执行完后执行,T3在T2执行完后执行? 解答:在T2线程的run()方法中加入代码T1.join,在T3线程的run()方法中加入代码T2.join。 或者在主线程main()方法中, t1.start(); try { t1.join(); } catch (InterruptedException e) { // TODO Auto-generated catch bloc

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值