在Java中要想实现多线程代码有两种方法,一种是继承thread类,另一种就是实现runnable接口
继承Thread类
Thread类是在java.lang包中定义的,一个类只要继承了thread类,此类就称为多线程操作类,在thread子类中,
必须明确的覆写Thread类中的run方法,此方法为线程的主体
线程类的定义如下.
class 类名称 extends thread{
public void run()
}
如果要正确地启动线程,是不能直接调用run方法的,而应该是调用从thread类中继承而来的start方法.
在线程启动时虽然调用的是start()方法,但实际上调用的却是run()方法的主体
如果一个类通过继承thread类来实现,那么只能调用一次start方法.
实现runnable接口
可以通过实现runnable接口的方式实现多线程,runnable接口中定义了一个抽象方法
public void run();
使用runnable接口实现多线程的格式如下
class 类名称 implements runnable
{
public void run()
{
线程主体.
}
}
但要想启动一个多线程必须要使用start()方法完成,如果继承了thread类,则可以直接从thread类中使用
start方法,但是现在实现的是runnable接口,那么该如何启动多线程呢,实际上,还是要依靠thread类完成启动.
在thread类中提供了public thread(Runnable target)和public thread(Runnable target,String name)
两个构造方法.
实现runnable接口相对于继承thread类来说,有如下显著的优势
1.适合多个相同程序代码的线程去处理同一资源的情况。
2.可以避免由于java的单继承特性带来的局限.
3.增加了程序的健壮性,代码能够被多个线程共享,代码与数据是独立的.
浙公网安备 33010602011771号