第一种方法是重写继承Thread类、表示线程执行的任务的run (方法。
第二种方法是重写实现Runnable接口、表示线程执行的任务的run (方法。
第三种方法是重写实现callable接口,call (方法)。 call ) )将返回值作为线程的执行体,可以声明并抛出异常
使用start ()方法启动线程
优点:因为JAVA是单继承机制,当我们继承Thread类后就不能继承其他类了,所以选用实现Runnable接口
1 .通过实现Runnable接口来创建Thread线程:
步骤创建实现Runnable接口的类:
Java代码
classsomerunnableimplementsrunnable {
公共语音运行(}
//do something here }
}
步骤2 :创建类对象:
runnableonerunnable=newsomerunnable (;
在步骤Runnable中创建Thread对象:
threadonethread=new thread (one runnable;
步骤4 :启动线程:
oneThread.start (;
这样就创建了线程。
oneRunnable对象的void run (); 方法之后,线程消失了。
2. 通过继承Thread类来创建一个线程:
定义继承步骤Thread类的子类:
Java代码
class SomeThead extends Thraad {
公共语音运行(}
//do something here } }
步骤2 :构建子类的对象:
somethreadonethread=newsomethread (;
步骤3 :启动线程:
oneThread.start (;
这样就创建了线程。
3.
通过Callable和Future创建线程
)1)制作Callable接口的安装类,安装作为具有返回值的线程执行体的call ) )方法。
)2)创建Callable实现类的实例,并使用封装该Callable对象的call )方法的返回值的FutureTask类包装Callable对象。
)3)使用FutureTask对象作为Thread对象的target创建并启动新线程。
)4)调用FutureTask对象的get ) )方法,得到子线程执行结束后的返回值。 这里,Callable接口(方法只有一个)定义如下。
Java代码
public interface Callable {
V call ) ) throws Exception; }
步骤1 )创建实现可调用接口的类SomeCallable (缩写);
步骤2 :创建类对象:
callableonecallable=newsomecallable (;
在步骤Callable中创建FutureTask对象:
futuretaskonetask=newfuturetask (one callable;
注释: FutureTask是一个包装器,通过接受Callable创建,同时提供Future和Runnable接口。
在步骤FutureTask中创建Thread对象:
threadonethread=new thread (one task );
步骤5 :启动线程:
oneThread.start (;
这样就创建了线程。