线程
- 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;@Overridepublic void run() {if (target != null) {target.run();}}
重写Thread的run方法后不会再调永Runnable的方法,所以打印了Dog
- 继承Thread并实现Runnable能创建线程么?
public class TR extends Thread implements Runnable {@Overridepublic 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”?
