首页 > 编程语言 >java for循环改造多线程例子

java for循环改造多线程例子

时间:2023-01-14 16:00:44浏览次数:34  
标签:执行 java list util 例子 线程 import 多线程

 1 package com.company;
 2 
 3 import java.util.ArrayList;
 4 import java.util.List;
 5 import java.util.concurrent.CountDownLatch;
 6 import java.util.concurrent.ExecutorService;
 7 import java.util.concurrent.Executors;
 8 
 9 public class Main {
10 
11     public static void main(String[] args) {
12         // write your code here
13         System.out.println("Hello World");
14         int TOTAL_THREADS = 4;//线程数
15         //数据库中的100条数据;
16         List list = new ArrayList();
17         for (int i = 0; i < 100; i++) {
18             list.add(i);
19         }
20         //Executors创建线程池new固定的10个线程
21         ExecutorService taskExecutor = Executors.newCachedThreadPool();
22         final CountDownLatch latch = new CountDownLatch(list.size());//用于判断所有的线程是否结束
23         System.out.println("个数==" + list.size());
24 
25         for (int m = 0; m < list.size(); m++) {
26             final int n = m;//内部类里m不能直接用,所以赋值给n
27             Runnable run = new Runnable() {
28                 public void run() {
29                     try {
30                         System.out.println("我在执行=" + n);
31                     } finally {
32                         latch.countDown(); //每次调用CountDown(),计数减1
33                     }
34                 }
35             };
36             taskExecutor.execute(run);//开启线程执行池中的任务。还有一个方法submit也可以做到,它的功能是提交指定的任务去执行并且返回Future对象,即执行的结果
37         }
38 
39         try {
40             //等待所有线程执行完毕
41             latch.await();//主程序执行到await()函数会阻塞等待线程的执行,直到计数为0
42         } catch (InterruptedException e) {
43             e.printStackTrace();
44         }
45         taskExecutor.shutdown();//关闭线程池
46         //所有线程执行完毕,执行主线程
47     }
48 
49 }

 

标签:执行,java,list,util,例子,线程,import,多线程
From: https://www.cnblogs.com/wudinglu/p/17051961.html

相关文章

  • java的模拟QQ小项目
    本文主要讲述QQ模拟项目的知识点以及相关代码。一.QQ模拟项目的图解:  二.项目的内容:1.用户登录 ......
  • JAVA开发环境搭建
    1.下载安装JDK8,对应电脑系统的版本;2.按提示安装,点下一步,都选择默认组件;3.记住安装路径(安装路径尽量简单基础或者复制)后,配置环境变量;4.右键打开“我的电脑”“属性”,选......
  • java基础知识----自增自减
    java的自增自减++(自增)publicclassDemo02{publicstaticvoidmain(String[]args){inta=3;intb=a++;System.out.println("......
  • 【Javaweb】瑞吉外卖你冲不冲?冲冲!冲!冲冲!(数据库环境搭建)(maven项目搭建)一
    图形界面创建数据库(Navicat)  命令行方式创建      瑞吉项目一共涉及到十一张表  导入表结构,既可以使用上面的图形界面,也可以使用MySQL命令:通过命......
  • BatteryStatsHelper.java源码分析
    在分析PowerUsageSummary的时候,其实可以发现主要获取应用和服务电量使用情况的实现是在BatteryStatsHelper.java中还是在线网站http://androidxref.com/上对Android版本6.......
  • 认识Java语言
    Java:高级程序设计语言优点:1.健壮性:有自动垃圾回收机制(GC)2.可移植性、跨平台:一次编译,多次运行(程序不变,平台可变)实际上Java程序并没有直接和操作系统打交道,而是通过JVM......
  • Java类加载过程
    概念Java类加载器(JavaClassloader)是Java运行时环境(JavaRuntimeEnvironment)的一部分,负责动态加载Java类到Java虚拟机的内存空间中,用于加载系统、网络或者其他来源的......
  • (Java)设计模式:结构型
    前言这篇博文续接的是UML建模、设计原则、创建型设计模式、行为型设计模式,有兴趣的可以看一下3.3、结构型这些设计模式关注类和对象的组合。将类和对象组合在一起,从......
  • JAVA是引用传递还是值传递
    我们先不上结论,接下来一点点推导:publicstaticvoidmain(String[]args){SpringApplication.run(Main.class,args);log.info("项目启动成功");......
  • JAVASE强化基础Day1
    总结:java跨平台性:首先编写java文件,再通过编码变成class文件,最后通过JVM(JAVA虚拟机)跨平台可以运行编码:java代码编码一般再eclipse和idea上都式TUF-8,如果发现代码的中文......