继承Thread类
/**
* 继承Thread类实现线程
* @author Administrator
*
*/
public class ThreadDemo1 extends Thread {
@Override
public void run() {
System.out.println("线程执行中------") ;
}
}
实现Runnable接口
/**
* 实现Runnable接口的线程实现方式
* @author Administrator
*
*/
public class ThreadDemo2ByRunnable implements Runnable {
@Override
public void run() {
System.out.println("实现Runnable接口的线程实现方式------") ;
}
public static void main(String [] args) {
new Thread(new ThreadDemo2ByRunnable()).start();
}
}
匿名内部类的方式
new Thread(){
@Override
public void run() {
System.out.println("Thread 内部类方式实现线程----") ;
}
}.start();
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("Runnable 内部类方式实现线程----") ;
}
}).start();
有返回值的线程
/**
* 有返回值的线程
* @author Administrator
*
*/
public class ThreadDemo4ByFuture implements Callable<Integer> {
@Override
public Integer call() throws Exception {
System.out.println("带返回值的线程---------") ;
return 1 ;
}
public static void main(String [] args) throws Exception {
ThreadDemo4ByFuture tt = new ThreadDemo4ByFuture();
FutureTask<Integer> future = new FutureTask<>(tt);
Thread thread = new Thread(future);
thread.start();
System.out.println("--------------") ;
System.out.println(future.get());
}
}
线程池的实现
public static void main(String [] args) {
// 固定大小的线程池
// ExecutorService executorService = Executors.newFixedThreadPool(10);
// 自动管理大小的线程池
ExecutorService executorService = Executors.newCachedThreadPool();
for (int i = 0; i < 100; i++) {
executorService.execute(
new Runnable() {
@Override
public void run() {
System.out.println(Thread.currentThread().getName() + "线程执行了----") ;
}
}
);
}
executorService.shutdown();
}
Spring实现多线程
spring框架通过@Async注解实现对多线程的支持
Java8通过Lambda实现多线程 :
// 通过lambda表达式实现Runnable接口来实现多线程
Runnable r1 = () -> System.out.println("lambda表达式实现线程---");
参考自:<龙果学院-Java并发编程原理与实战>