JAVA多线程编程的实用技巧与试题及答案
姓名:____________________
一、单项选择题(每题2分,共10题)
1.下列关于Java线程的说法,错误的是:
A.Java中的线程是由java.lang.Thread类直接或间接实现的。
B.Java线程的调度策略是优先级优先。
C.Java线程有三种状态:新建、运行和死亡。
D.Java线程可以通过继承Thread类或实现Runnable接口来创建。
2.以下哪个方法用于启动一个线程?
A.start()
B.run()
C.execute()
D.Thread.sleep()
3.以下哪个方法用于设置线程的优先级?
A.setPriority()
B.getPriority()
C.setPriority(int)
D.getPriority(int)
4.下列关于线程同步的说法,错误的是:
A.同步方法只能同步当前对象。
B.同步代码块可以同步任意对象。
C.同步方法/代码块可以防止多个线程同时访问共享资源。
D.同步方法/代码块可以保证线程安全。
5.以下哪个关键字用于声明线程同步?
A.synchronized
B.lock
C.monitor
D.wait
6.下列关于线程通信的方法,错误的是:
A.wait()方法使当前线程等待,直到另一个线程调用notify()或notifyAll()方法。
B.notify()方法唤醒一个正在等待的线程。
C.notifyAll()方法唤醒所有正在等待的线程。
D.yield()方法使当前线程让出CPU,让其他线程运行。
7.以下哪个方法用于设置线程的中断状态?
A.interrupt()
B.isInterrupted()
C.interrupted()
D.Thread.currentThread().interrupt()
8.以下哪个方法用于检查线程是否处于中断状态?
A.isInterrupted()
B.interrupted()
C.Thread.currentThread().isInterrupted()
D.Thread.currentThread().interrupted()
9.以下哪个方法用于线程的阻塞?
A.sleep()
B.wait()
C.yield()
D.interrupt()
10.以下哪个关键字用于释放对象锁?
A.synchronized
B.lock
C.monitor
D.notify()
二、填空题(每空2分,共10分)
1.Java线程的调度策略是__________。
2.线程有三种状态:__________、__________和__________。
3.在Java中,线程可以通过继承__________类或实现__________接口来创建。
4.线程同步的关键字是__________。
5.线程通信的方法有__________、__________、__________和__________。
6.线程的阻塞方法有__________、__________和__________。
7.线程的中断状态可以通过__________方法设置,通过__________方法检查。
8.线程的优先级可以通过__________方法设置,通过__________方法获取。
9.线程的睡眠时间可以通过__________方法设置。
10.线程的让出CPU时间可以通过__________方法实现。
三、判断题(每题2分,共10分)
1.Java中的线程是由java.lang.Thread类直接或间接实现的。()
2.Java线程的调度策略是优先级优先。()
3.同步方法只能同步当前对象。()
4.同步代码块可以同步任意对象。()
5.同步方法/代码块可以防止多个线程同时访问共享资源。()
6.同步方法/代码块可以保证线程安全。()
7.wait()方法使当前线程等待,直到另一个线程调用notify()或notifyAll()方法。()
8.notify()方法唤醒一个正在等待的线程。()
9.notifyAll()方法唤醒所有正在等待的线程。()
10.yield()方法使当前线程让出CPU,让其他线程运行。()
四、简答题(每题5分,共20分)
1.简述Java线程的创建方法。
2.简述线程同步的原理和作用。
3.简述线程通信的方法及其作用。
4.简述线程的阻塞方法及其作用。
5.简述线程的中断状态及其作用。
五、编程题(共30分)
1.编写一个Java程序,实现两个线程交替打印1到100。
2.