线程使用有两种:
那么如果这两种情况都存在时,会先执行哪个呢?让我们来看看下面的例子:1.继承Thread类
2.实现Runnable接口
产生的结果如下:package com.norelax.www; public class TraditionalThread { public static void main(String[] args) { new Thread(new Runnable() { public void run() { System.out.println("Runnable:"+Thread.currentThread().getName()); } }){ @Override public void run() { System.out.println("Override:"+Thread.currentThread().getName()); }}.start(); } }
Override:Thread-0
说明:当继承Thread类时,子类会继承父类的run() 方法,会优先执行子类的run()方法
父类的run()方法如下:
@Override public void run() { if (target != null) { target.run(); } }
当子类没有run()方法时,会执行父类的run()方法,会判断是否有实现Runnable接口,如果实现,会执行。