一个线程在运行时发生异常会怎样?
答:如果这个异常没有被捕获,这个线程将会停止运行。
什么是线程组?
答:ThreadGroup类,可以把线程归属到某一个线程组中,线程组中可以有线程对象, 也可以有线程组,组中还可以有线程,它的组织结构有点类似于树,但是它使用起来不安全。
Java中的volatile变量是什么?
答:volatile变量是java语言提供的一种稍弱的同步机制,它可以用来确保将变量的更新操作通知到其他的线程。
怎么检测一个线程是否拥有锁?
答:在 java.lang.Thread中有一个方法叫holdsLock(),如果当且仅当当前线程拥有某个具体对象的锁时,它会返回true。
有三个线程T1,T2,T3,怎么确保它们按顺序执行?
答:用线程类的join()方法在一个线程中启动另一个线程,参考代码如下:
public class TestMain {
public static void main(String[] args) throws Exception {
Thread T1 = new Thread(new Runnable() {
@Override
public void run() {
System.out.println("我是T1");
}
});
Thread T2 = new Thread(new Runnable() {
@Override
public void run() {
T1.start();
try {
T1.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("我是T2");
}
});
Thread T3 = new Thread(new Runnable() {
@Override
public void run() {
T2.start();
try {
T2.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("我是T3");
}
});
T3.start();
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
什么是原子操作?
答:原子操作是指一个不受其他操作影响的操作任务单元,比如i++就不是原子操作。
什么是synchronized关键字?
答:可参考本篇博客【synchronized关键字简析】
什么是线程池?
答:可参考本篇博客【简单了解线程池】
说说线程池创建的几种方式,以及最佳方式?
答:可参考本篇博客【为什么推荐使用ThreadPoolExecutor来创建线程池】
说说wait()和sleep()的区别?
答:可参考本篇博客【说说wait()和sleep()的区别】
|
|