Java的多线程实现:
在Java中实现多线程有以下两种方式:
A 继承 Thread 类
B 实现 Runnable 接口
一 , 继承 Thread 类
Thread类实在java.lang包中定义的。一个类只要继承了Thread类,就称为多线程操作类,在Thread的子类中,必须明确的覆写Thread类中的run()方法,此方法为线程的主体。
线程操作类格式
class MyThread extends Thread //定义类继承Thread类 作为线程的实现类
{
private String name ; // 定义属性 表示线程名称
public MyThread(String name) //构造方法
{
this.setName(name) ; //为属性赋值
}
public void run() //覆写run()方法,作为线程 操作主体
{
for(int i=0;i<10;i++)
{
System.out.println(name + "i = " + i) ;
}
}
}
class MyThreadDemo01 extends Thread //定义类继承Thread类 作为线程的实现类
{
private String name ; // 定义属性 表示线程名称
pubcli MyThreadDemo01 //构造方法
{
this.setName(name) ; //为属性赋值
}
public void run() //覆写run()方法,作为线程 操作主体
{
for(int i=0;i<10;i++)
{
System.out.println(name + "i = " + i) ;
}
}
}
二 实现Runnable接口
在Java中也可以通过实现Runnable接口来实现多线程,Runnable接口中只定义了一个抽象方法
public void run() ; //抽象方法
class MyThread implements Runnable //定义类实现Runnable接口 作为线程的实现类
{
private String name ; // 定义属性 表示线程名称
public MyThread(String name) //构造方法
{
this.name = name ; //为属性赋值
}
public void run() //覆写run()方法,作为线程 操作主体
{
for(int i=0;i<10;i++)
{
System.out.println(name + "i = " + i) ;
}
}
}
如果要启动线程,则肯定依靠Thread类,但是之前如果直接继承了Thread类,则可以直接使用start()方法,但是在Runnable接口中没有此方法。
Thread类的构造
使用下面方法启动多线程
public Thread(Runnable target)
class MyThread implements Runnable //定义类实现Runnable接口 作为线程的实现类
{
private String name ; // 定义属性 表示线程名称
public MyThread(String name) //构造方法
{
this.name = name ; //为属性赋值
}
public void run() //覆写run()方法,作为线程 操作主体
{
for(int i=0;i<10;i++)
{
System.out.println(name + "i = " + i) ;
}
}
}
public class RunnableDemo01
{
public static void main(String[] args)
{
MyThread mt1 = new MyThread("IronMan") ; //实例化对象
MyThread mt2 = new MyThread("SpiderMan") ; //实例化对象
Thread t1 = new Thread(mt1) ; //实例化Thread类对象
Thread t2 = new Thread(mt2) ; //实例化Thread类对象
t1.start() ; //调用线程操作主体
t2.start() ; //调用线程操作主体
}
}
三 Thread类和Runnable接口的区别
使用Thread类在操作多线程的时候,无法实现资源共享的目的,而使用Runnable接口的时候可以实现资源共享。