java中实现多线程的两种基本方法

java中实现多线程有两种基本方法,一种是继承Thread, 另一种是实现Runnable接口。

但是因为java中子类只能继承一个父类,如果采用继承Thread类,就不能继承其他类,很受限制。

以下是采用继承Thread类的例子:

public class MyThreadTest{
public static void main(String[] args){
MyThread amythread1=new MyThread("my thread 1");
MyThread amythread2=new MyThread("my thread 2");

amythread1.start();//amythread1.run();
amythread2.start();//amythread2.run();
}
}
class MyThread extends Thread{
public MyThread(String name){
super();
this.name=name;
}
public void run(){
for(int i=0;i<20;i++)
System.out.println(name+":"+i);
}
private String name;
}

注意不能使用“amythread1.run(); ”,这样不能启用多线程,只是 普通函数。

 

比较普遍的做法是采用实现Runnable接口去实现多线程。

实现Runnable接口必须使用Thread类的实例才能创建

具体有两步:

1.把实现Runnable接口的类实例化

2.把第1步实例化的类的对象做为参数提供给新建Thread对象的构造函数。

public class ThreadRunnable implements Runnable
{
public void run()
{
System.out.println(Thread.currentThread().getName());
for(int i=0;i<100;i++)
System.out.println(Thread.currentThread().getName()+"i="+i);
}
public static void main(String[] args)
{
ThreadRunnable t1 = new ThreadRunnable();
ThreadRunnable t2 = new ThreadRunnable();
Thread thread1 = new Thread(t1, "MyThread1");
Thread thread2 = new Thread(t2);
thread2.setName("MyThread2");
thread1.start();//thread1.run();
thread2.start();//thread2.run();
}
}

posted on 2015-01-22 16:15  wudymand  阅读(2018)  评论(0编辑  收藏  举报

导航