zoukankan      html  css  js  c++  java
  • Java多线程实践

    1.实现Runnable接口

     1 import java.util.Random;
     2 
     3 
     4 public class PrintTask implements Runnable{
     5     private final int sleepTime;
     6     private final String taskName;
     7     private final static Random generator = new Random();
     8     
     9     
    10     public PrintTask(String name) {
    11         taskName = name;
    12         sleepTime = generator.nextInt(5000);
    13     }
    14 
    15     @Override
    16     public void run() {
    17         try {
    18             System.out.printf("%s going to Sleep for %d milliseconds.
    ",
    19                     taskName, sleepTime);
    20             Thread.sleep(sleepTime);
    21         } catch (InterruptedException e) {
    22             System.out.printf("%s %s
    ", taskName, "terminated prematurely" +
    23                     " due to interruption");
    24         }
    25         System.out.printf("%s done sleeping
    ", taskName);
    26     }
    27 
    28 }

    2.使用ExecutorService管理执行PrintTask的线程

     1 import java.util.Random;
     2 
     3 
     4 public class PrintTask implements Runnable{
     5     private final int sleepTime;
     6     private final String taskName;
     7     private final static Random generator = new Random();
     8     
     9     
    10     public PrintTask(String name) {
    11         taskName = name;
    12         sleepTime = generator.nextInt(5000);
    13     }
    14 
    15     @Override
    16     public void run() {
    17         try {
    18             System.out.printf("%s going to Sleep for %d milliseconds.
    ",
    19                     taskName, sleepTime);
    20             Thread.sleep(sleepTime);
    21         } catch (InterruptedException e) {
    22             System.out.printf("%s %s
    ", taskName, "terminated prematurely" +
    23                     " due to interruption");
    24         }
    25         System.out.printf("%s done sleeping
    ", taskName);
    26     }
    27 
    28 }

    3.执行结果

    可以看到,由于每个任务随机休眠时间不同,执行结束的顺序是不同的。

  • 相关阅读:
    js判断是否是合法的端口号
    解决tomcat中文乱码
    使用java代码删除nexus maven仓库中的jar包、pom.xml等组件
    基于 Kubernetes 构建企业 Jenkins 持续集成平台
    minio部署
    elaticsearch 部署
    skywalking 8.0 配置文件
    使用node local dns来提升ClusterDNS服务质量
    kubernetes之监控Operator部署Prometheus
    夜莺监控+prometheus 架构图
  • 原文地址:https://www.cnblogs.com/zhaoyu1995/p/5741537.html
Copyright © 2011-2022 走看看