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     }

执行结果:

 



posted @ 2018-03-13 18:24  低调的小白  阅读(8024)  评论(0编辑  收藏  举报