线程
- Thread 和 Runnable 的执行顺序?
public class Explorer3 {
public static void main(String[] args) {
Runnable r = new Runnable() {
public void run() {
System.out.print("Cat");
}
};
Thread t = new Thread(r) {
public void run() {
System.out.print("Dog");
}
};
t.start();
}
}
答:thread的run方法源码为,
private Runnable target;
@Override
public void run() {
if (target != null) {
target.run();
}
}
重写Thread的run方法后不会再调永Runnable的方法,所以打印了Dog
- 继承Thread并实现Runnable能创建线程么?
public class TR extends Thread implements Runnable {
@Override
public void run() {
System.out.println("执行线程");
}
public static void main(String[] args) {
Thread thread = new Thread(new TR());
thread.start();
}
}
没有影响,Thread本身就实现了 Runnable,并通过聚合和策略模式使用Runnable种的run方法,代码可以正常执行。
- 创建三个线程,依次打印“a”,”l”,”i”?