Java 多线程异步处理demo
java中实现多线程
1)继承Thread,重写里面的run方法
2)实现runnable接口
通过源码发现:
第一种方法说是继承Tread然后重写run方法,通过查看run方法的源码,发现run方法里面调用是runnable接口中抽象的run()方法。
既然这样不如直接使用第二种方法,使用第二种方法,第一 java没有单继承的限制,第二 还可以隔离代码
言归正传下面是第二种方法的demo
1.处理业务代码
1 //根据传参打印对应的名字 2 private void printName(String name) throws Exception{ 3 System.out.println(name); 4 }
2.创建内部类实现Runnable接口
1 private class PrintName implements Runnable{ 2 private String name; 3 4 public PrintName(String name){ 5 this.name = name; 6 } 7 8 //Runnable接口中的抽象方法 9 @Override 10 public void run(){ 11 try { 12 printName(name); 13 }catch (Exception e){ 14 System.out.println(e); 15 } 16 17 } 18 }
3. 创建线程对象并执行线程
1 private void createThead() throws Exception { 2 String name = "hello world"; 3 Thread thread = new Thread(new PrintName(name)); 4 thread.start(); 5 }
现在附上全部代码:
1 package com.ieou.demo.controller; 2 3 import org.springframework.web.bind.annotation.GetMapping; 4 import org.springframework.web.bind.annotation.RequestMapping; 5 import org.springframework.web.bind.annotation.RestController; 6 7 @RestController 8 @RequestMapping("/") 9 public class Demo1Controller { 10 11 12 /** java 多线程 异步实现demo */ 13 14 //第一步 处理业务代码 15 //根据传参打印对应的名字 16 private void printName(String name) throws Exception{ 17 System.out.println(name); 18 } 19 20 //创建内部类实现Runnable接口 21 private class PrintName implements Runnable{ 22 private String name; 23 24 public PrintName(String name){ 25 this.name = name; 26 } 27 28 //Runnable接口中的抽象方法 29 @Override 30 public void run(){ 31 try { 32 printName(name); 33 }catch (Exception e){ 34 System.out.println(e); 35 } 36 37 } 38 } 39 40 //第三部 创建线程对象 41 private void createThead() throws Exception { 42 String name = "hello world"; 43 Thread thread = new Thread(new PrintName(name)); 44 thread.start(); 45 } 46 47 @GetMapping("/name") 48 public String findName() throws Exception{ 49 System.out.println("name1"); 50 createThead(); 51 System.out.println("name3"); 52 return "1"; 53 }
执行结果:
hello world!!!