在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(); } } }