实现Runnable接口
因为Java的单根继承特性,需要Runnable来实现类多继承的实现。
package com.myRunnable;
/**
* 创建一个实现Runnable接口的类
* @author admin
*/
public class MyRunnable implements Runnable{
@Override
public void run() {
System.out.println("运行中!");
}
}
package run;
import com.myRunnable.MyRunnable;
/**
* 运行代码
* @author admin
*/
public class Run {
public static void main(String[] args) {
Runnable runnable = new MyRunnable();
Thread thread = new Thread(runnable);
thread.start();
System.out.println("运行结束!");
}
}
运行结果:
由运行代码中可以看出,Runnable接口的实现类的使用方式。可以通过Thread(Runnable target)和Thread(Runnable target, String name)的构造函数可以传递Runnable接口,说明构造函数支持传入一个Runnable接口的对象。
Thread.java 的构造函数
构造函数 | |
---|---|
Thread() | 分配新的Thread对象 |
Thread(Runnable target) | 分配新的Thread对象 |
Thread(Runnable target, String name) | 分配新的Thread对象 |
Thread(String name) | 分配新的Thread对象 |
Thread(ThreadGroup group, Runnable target) | 分配新的Thread对象 |
Thread(ThreadGroup group, Runnable target, String name) | 分配新的Thread对象,以便将 target 作为其运行对象,将指定的 name 作为其名称,并作为 group 所引用的线程组的一员 |
Thread(ThreadGroup group, Runnable target, String name, long stackSize) | 分配新的Thread对象,以便将 target 作为其运行对象,将指定的 name 作为其名称,并作为 group 所引用的线程组的一员,并具有指定的 堆栈大小 |
Thread(ThreadGroup group, String name) | 分配新的Thread对象 |
参数解析
-
Runnable target
实现了Runnable接口的类的实例。要注意的是Thread类也实现了Runnable接口,因此,从Thread类继承的类的实例也可以作为target传入这个构造方法。 -
String name
线程的名字。这个名字可以在建立Thread实例后通过Thread类的setName方法设置。如果不设置线程的名字,线程就使用默认的线程名:Thread-N,N是线程建立的顺序,是一个不重复的正整数。 -
ThreadGroup group
当前建立的线程所属的线程组。如果不指定线程组,所有的线程都被加到一个默认的线程组中。 -
long stackSize
线程栈的大小,这个值一般是CPU页面的整数倍。如x86的页面大小是4KB。在x86平台下,默认的线程栈大小是12KB。
发散
Thread.java类也实现了Runnable接口,由此可见构造函数Thread(Runnable target) 不光可以传入 Runnable 接口的对象,还可以传入一个 Thread 类的对象,这样可以将一个Thread 对象中的 run() 方法交由其他的线程进行调用。