最全创建线程的方式

1、继承Thread类

package cn.skq.thread1;

class ThreadTest extends Thread{
	@Override
	public void run() {
		System.out.println("我是一个小线程");
	}
}
public class Test {
	public static void main(String[] args) {
		ThreadTest t = new ThreadTest();
		t.start();
	}
}

2、实现Runnable接口

package cn.skq.thread2;

class ThreadTrag implements Runnable {

	@Override
	public void run() {
		System.out.println("我是一个小线程");
	}

}

public class Test {
	public static void main(String[] args) {
		Thread t = new Thread(new ThreadTrag());
		t.start();
	}
}

3、匿名内部类

package cn.skq.thread3;

public class Test {
	public static void main(String[] args) {
		new Thread(new Runnable() {
			
			@Override
			public void run() {
				System.out.println("我是一个小线程");
			}
		}).start();
	}
}

4、实现Callable接口,带返回值的线程

package cn.skq.thread4;

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

class ThreadTest implements Callable<Integer> {

	@Override
	public Integer call() throws Exception {
		System.out.println("我是一个小线程");
		return 1;
	}

}

public class Test {
	public static void main(String[] args) {
		ThreadTest callable = new ThreadTest();
		FutureTask<Integer> futureTask = new FutureTask<>(callable);
		new Thread(futureTask).start();
		try {
			System.out.println("线程返回值为:" + futureTask.get());
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ExecutionException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

5、定时器实现多线程

package cn.skq.thread5;

import java.util.Timer;
import java.util.TimerTask;

public class Test {
	public static void main(String[] args) {
		Timer timer = new Timer();
		timer.schedule(new TimerTask() {
			
			@Override
			public void run() {
				System.out.println("我是一个小线程");
			}
		}, 0, 1000);
	}
}

6、线程池实现多线程

package cn.skq.thread6;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class Test {
	public static void main(String[] args) {
		ExecutorService threadPool = Executors.newFixedThreadPool(10);
		for (int i = 0; i < 10; i++) {
			threadPool.execute(new Runnable() {
				
				@Override
				public void run() {
					System.out.println("我是一个小线程");
				}
			});
		}
		threadPool.shutdown();
	}
}

7、Lambda表达式创建线程

package cn.skq.thread7;

public class Test {
	public static void main(String[] args) {
		new Thread(()->System.out.println("我是一个小线程");).start();
	}
}

8、spring创建线程

猜你喜欢

转载自blog.csdn.net/qq_37685457/article/details/89764347