java多线程学习——3种创建多线程的方式

在java中,多线程的创建方式总共有3种,其中继承Thread类与实现Runnable接口这两种方法最常用,但是实际上还有一种实现Callable接口的方式来创建多线程。以下是三种方式创建多线程的java代码实例:

1.继承Thread类

public class Test1 extends Thread{
	int sum=0;
	public void run(){
		System.out.println("执行run方法");
		
		for(int i=0;i<50;i++){
			sum+=i;
			System.out.println(Thread.currentThread().getName()+" sum:"+sum);
		}
		
	}
}

2.实现Runnable接口

public class Test2 implements Runnable{
	int sum=0;
	public void run(){
		System.out.println("执行run方法");
		
		for(int i=0;i<50;i++){
			sum+=i;
			System.out.println(Thread.currentThread().getName()+"sum:"+sum);
		}
		
	}
}

3.实现Callable接口

public class Test3 implements Callable<Integer>{
	public Integer call() throws Exception {
		int sum=0;
		for(int i=0;i<30;i++){
			sum+=i;
			System.out.println(Thread.currentThread().getName()+" sum:"+sum);
		}
		return sum;
	}
	
}

测试类:

import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;

/**
 *@date 2017-5-25
 *@description 多线程的三种实现方式测试
 **/
public class MainTest {
	
	/**
	 * 2017-5-25
	 */
	public static void main(String[] args) {
		//继承thread类
		Test1 test1_1 = new Test1();
		Test1 test1_2 = new Test1();
		test1_1.start();
		test1_2.start();
		
		//实现runnable接口
		Test2 test2_1 = new Test2();
		Test2 test2_2 = new Test2();
		Thread a = new Thread(test2_1);
		Thread b = new Thread(test2_2);
		a.start();
		b.start();
		
		//通过实现Callable接口
		Test3 test3_1 = new Test3();
		FutureTask<Integer> ft = new FutureTask<Integer>(test3_1);
		Thread c = new Thread(ft);
		Test3 test3_2 = new Test3();
		FutureTask<Integer> ft2 = new FutureTask<Integer>(test3_2);
		Thread d = new Thread(ft2);
		c.start();
		d.start();
		try {
			System.out.println(ft.get());
		} catch (InterruptedException e) {
			e.printStackTrace();
		} catch (ExecutionException e) {
			e.printStackTrace();
		}
	}

}





 

猜你喜欢

转载自blog.csdn.net/u013001763/article/details/72780211