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 }
执行结果:
来源:https://www.cnblogs.com/wang-yaz/p/8560054.html