目录
1. 引入
由于Java语言不允许类的多重继承,如果类本身已经继承了某个父类,所以就无法再继承Thread类,这种情况下可以使用Runnable接口
2. 介绍
Runnable接口是Java语言中实现线程的接口,定义在java.lang包中,其中只提供了一个抽象方法run() 的声明。从本质上说,任何实现线程的类都必须实现该接口。Thread类就是直接继承了Object类,并实现了Runnable接口。
3. 使用说明
(1)声明一个实现Runnable接口类,并重载run() 方法
(2)Runnable接口并没有任何对线程创建的支持,通过Thread(Runnable target)的构造方法创建Thread类的实例
(3)利用实例对象调用start()创建新线程
Runnable接口不仅间接地解决了多重继承问题,而且与Thread类相比,Runnable接口更适合于多个线程处理同一资源。
4. 当前运行线程表示
1)第一种情况是若直接使用继承Thread类的子类,在类中this即指当前线程;
2)其他情况,要在类中获得当前线程的引用,须通过Thread.currentThread() 方法
5. 实例代码
package Learning;
public class $2_Runnable implements Runnable{
@Override
public void run() { //run()方法的重写与覆盖
System.out.println(Thread.currentThread().getName()); //currentThread()方法:
for (int i=0;i<20;i++){
System.out.println("看代码-"+i);
}
}
public static void main(String[] args) {
$2_Runnable t1=new $2_Runnable();
new Thread(t1).start();
/*实现Runnable接口:
①利用实现Runnable接口的对象创建Thread对象,Thread(Runnable target); Thread(Runnable target, String name)
②调用Thread对象的start()方法,后会经历 if (target != null) { target.run(); } 判断,进而实现调用对象t1的run()方法
③解决继承Thread类中的单继承的局限性
④常使用Runnable接口实现线程间的数据共享
*/
for(int i=0;i<20;i++){
System.out.println("写代码-"+i);
}
}
}