java创建多线程的三种方式

/***************************继承Thread类创建多线程************************/
public class FirstThread extends Thread{
	private int i;//继承Thread创建线程不共享实例变量
	public void run()
	{
		for (; i < 10; i++) {
			System.out.println(getName()+" "+i);//通过this.getName()获得线程名称
		}
	}
	public static void main(String[] args)
	{
		for (int i = 0; i < 100; i++) {
			System.out.println(Thread.currentThread().getName()+" "+ i);
			if(i == 20)
			{
				new FirstThread().start();
				new FirstThread().start();
			}
		}
		
	}
}
/************************实现Runnable接口创建多线程*************************/
public class SecondThread implements Runnable  
{
	private int i;//继承Runnable接口共享实例变量
	public void run()
	{
		for(;i < 100; i++)
		{
			System.out.println(Thread.currentThread().getName()+" "+i);
		}
	}
	public static void main(String[] args) {
		for (int i = 0; i < 100; i++) {//继承Runnable接口要通过Tread.currentThread()获得当前进程
			System.out.println(Thread.currentThread().getName()+" "+i);
			if(i == 20)
			{
				SecondThread st = new SecondThread();//Runnable对象作为Thread对象的target
				new Thread(st, "新线程1").start();
				new Thread(st, "新线程2").start();
			}
		}
	}
}
/************************使用Callable和Future创建线程********************************/
import java.util.concurrent.Callable;
import java.util.concurrent.FutureTask;
public class ThirdThread {
	public static void main(String[] args) 
	{	//FutureTask类包装了Callable对象,封装了Callable对象的call()方法。
		//call()方法可以有返回值,也可以声明抛出异常。
		FutureTask<Integer> task = new FutureTask<Integer>((Callable<Integer>)()->{
			int i = 0;
			for(; i < 100; i ++)
			{
				System.out.println(Thread.currentThread().getName()+" 的循环变量i的值:"+i);
			}
			return i;
		});
		
		for (int i = 0; i < 100	; i++) {
			System.out.println(Thread.currentThread().getName()+" 的循环变量的值:"+i);
			if(i == 20)
			{
				new Thread(task, "有返回值的线程").start();//task作为Thread类的target
			}
		}
		try
		{
			System.out.println("子线程的返回值:" + task.get());//get()获取返回值
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}
	}
}
原文地址:https://www.cnblogs.com/masterlibin/p/4794604.html