JAVA中实现多线程的两种方式


java实现多线程有两种方法


1、继承Thread类

2、实现Runnable接口


两种实现方式的共同点:

不论用哪种方法,都必须用Thread(如果是Thead子类则用它本身)产生线程,然后再调用start()方法。

两种实现方式的不同点:

1、继承Thread类只能是单继承,而实现Runnable接口则可以实现多继承(即如果有一个类,它已继承了某个类,又想实现多线程,那就可以通过实现Runnable接口来实现。

2、实现Runnable接口,只需要建立一个实现这个类的实例,然后用这一个实例对象产生多个线程。(把一个实现了Runnable接口的对象作为参数产生一个Thread对象,再调用Thread对象的start()函数就可执行并行操作。如果在产生一个Thread对象时以一个Runnable接口的实现类的对象作为参数,那么在调用start()函数时,start()会调用Runnable接口的实现类中的run()函数。

3.另外,使用 Runnable 接口来实现多线程使得我们能够在一个类中包容所有的代码,有利于封装。


注:很多情况下使用第二种实现方式的多点


以下是两种方式的简单实现小例子:

//方法一,继承Thread类
class MyThread extends Thread {
	  public void run(){
	    for ( int i = 0; i < 5; i++ ){
	        System.out.println("num "+ i+":"+Thread.currentThread().getName());
	    }
	  }
	  
}

public class ThreadDemo1{
	public static void main(String[] args){
	    for ( int i = 0; i < 3; i++ ){
	    	MyThread tt = new MyThread();
		    tt.start();
	    }
	}
}

//方法二,实现Runnable接口
class MyThread2 implements Runnable{

	public void run(){
		 for ( int i = 0; i < 5; i++ ){
		        System.out.println("num "+ i+":"+Thread.currentThread().getName());
		    }
	}
	
}

public class ThreadDemo2 {
	public static void main(String[] args) {
		MyThread2 mt = new MyThread2();
		for ( int i = 0; i < 3; i++ ){
	    	Thread tt = new Thread(mt);
		    tt.start();
	    }
	}
}



你可能感兴趣的:(thread,多线程,Runnable,实现多线程方式)