线程
Key Point
* 线程的概念
* 线程的创建
* 线程的状态转换
* 线程间数据共享
* 线程的同步
练习
1. 一个单CPU 的机器,如何同时执行多个线程?请简述其原理
2. (线程的创建)有以下代码
public class Example implements Runnable {
public void run() {
while(true) {
}
}
public static void main(String args[]) {
Example ex1 = new Example();
Example ex2 = new Example();
Example ex3 = new Example();
ex1.run();
ex2.run();
ex3.run();
}
}
选择正确答案:
A. 代码编译失败,因为ex2.run()无法获得执行
B. 代码编译成功,存在3 个可运行的线程
C. 代码编译成功,存在1 个可运行的线程
3. (线程的创建)有以下代码
class Example implements Runnable {
public static void main(String args[]) {
Thread t = new Thread(new Example());
t.start();
}
public void run(int limit) {
for (int x = 0; x
System.out.println(x);
}
}
}
选择正确答案:
A. 打印输出,从0 至limit
B. 无内容输出,因为没有明确调用run()方法。
C. 代码编译失败,因为没有正确实现Runnable 接口
D. 代码编译失败,如果声明类为抽象类,可使代码编译成功。
E. 代码编译失败,如果去掉implements Runnable,可使代码编译成功。
4. (sleep 方法)有如下代码
class Example {
public static void main(String args[]) {
Thread.sleep(3000);
System.out.println(“sleep”);
}
}
选择正确答案:
A. 编译出错
B. 运行时异常
C. 正常编译运行,输出sleep
D. 正常编译运行,但没有内容输出
5. (线程的创建)有如下代码
class Example extends Thread {
public void run() {
System.out.println(“Running”);
System.out.println(“Done”);
}
private void xxx() {
System.out.println(“In xxx”);
}
public static void main(String args[]){
Example ttt = new Example();
ttt.start();
ttt.xxx();
}
}
以上代码是否会打印“In xxx”?
6. (线程的创建)创建两个线程,要求如下: