Java 多线程
java 实现 多线程 三种方法
1. 继承Thread重写 run方法。
2.实现Runnable的run方法。无返回值。一个类可以实现多个接口。
3.实现Callable的call方法。有返回值,可以抛出线程错误。一个类可以实现多个接口。
public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); //继承 Thread 重写 run方法 Thread runThread = new Thread(){ @Override public void run(){ System.out.println(Thread.currentThread().getName() +"@@@@@@@@@继承 Thread 重写 run方法@@@@@@@@@@@@"); } }; runThread.start(); //继承 Thread 重写 run方法 new Thread1().start(); //实现Runnable 实现 run 方法 Thread runnableThread = new Thread(new Runnable() { @Override public void run() { System.out.println(Thread.currentThread().getName() +"##########继承 Thread 重写 run方法############"); } }); runnableThread.start(); //实现Runnable 实现 run 方法 new Thread(new Thread2()).start(); //实现Callable call方法 //定义 程序池 ExecutorService executorService = Executors.newFixedThreadPool(2); FutureTask<String> futureTask = new FutureTask<>(new Callable<String>() { @Override public String call() throws Exception { System.out.println(Thread.currentThread().getName() +"$$$$$$$$$$$实现Callable call方法$$$$$$$$$$$$$$"); return null; } }); executorService.submit(futureTask); //实现Callable call方法 executorService.submit(new Callable1()); } } //继承 Thread 重写 run方法 class Thread1 extends Thread{ @Override public void run(){ System.out.println(Thread.currentThread().getName() +"@@@@@@@@@继承 Thread 重写 run方法@@@@@@@@@@@@"); } } //实现Runnable 实现 run 方法 class Thread2 implements Runnable{ @Override public void run(){ System.out.println(Thread.currentThread().getName() +"##########继承 Thread 重写 run方法############"); } } //实现Callable call方法 class Callable1 implements Callable<String>{ @Override public String call(){ System.out.println(Thread.currentThread().getName() +"$$$$$$$$$$$实现Callable call方法$$$$$$$$$$$$$$"); return null; } }
执行结果