Key Point:
- 线程的概念
- 线程的创建
- 线程的状态转换
- 线程间数据共享
- 线程的同步
问题:
-
一个单CPU的机器,如何同时执行多个线程?请简述其原理。
单核CPU在任何时间点上,只能运行一个进程;宏观并行、微观串行。 操作系统(OS)会为每个线程分配执行时间,多个线程,彼此间完成不同的工作,交替执行。
-
(线程的创建)有以下代码
public class Example implements Runnable{
@Override
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个可运行的线程
C
- (线程的创建)有以下代码
public 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<limit;x++) {
System.out.println(x);
}
}
}
选择正确答案:
A.打印输出,从0至limit。
B.无内容输出,因为没有明确调用run()方法。
C.代码编译失败,因为没有正确实现Runnable接口。
D.代码编译失败,如果声明类为抽象类,可使代码编译成功。
E.代码编译失败,如果去掉implements Runnable,可使代码编译成功
C
- (sleep方法)有如下代码
public class Example {
public static void main(String[] args) {
Thread.sleep(3000);
System.out.println("sleep");
}
}
选中正确答案:
A.编译出错
B.运行时异常
C.正常编译运行,输出sleep
D.正常编译运行,但没有内容输出
A
-
(线程的创建)创建两个线程,要求如下:
I.一个线程输出100个1-26,另一个线程输出100个A-Z II,一个线程使用继承Thread类的写法,另一个线程使用实现Runnable接口的写法。
public class TestThread {
public static void main(String[] args) {
MyThread1 t1 = new MyThread1();
t1.start();
Thread t2 = new Thread