zoukankan      html  css  js  c++  java
  • 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     }

    执行结果:



  • 相关阅读:
    自己的第一个网页
    第一次爬虫测试
    科学计算与可视化
    python自顶向下的设计方法进行体育竞技分析
    python PIL库的相关操作
    python 关于身份证号码的相关操作
    jieba库
    汉诺塔
    Django项目中运行Scrapy项目
    **Django+Echart实现多个饼状图(echart数据格式问题 {value: 135, name: '视频广告'})
  • 原文地址:https://www.cnblogs.com/wang-yaz/p/8560054.html
Copyright © 2011-2022 走看看