首页 > 其他分享 >多线程

多线程

时间:2022-09-29 19:31:51浏览次数:54  
标签:taskNum System println Date new 多线程 out

package com.bkc.bpmp.modules.external.service;

import java.util.concurrent.*;
import java.util.Date;
import java.util.List;
import java.util.ArrayList;

/**
* Java线程:有返回值的线程
*
* @author wb_qiuquan.ying
*/
@SuppressWarnings("unchecked")
public class Test
{
public static void main(String[] args)
throws ExecutionException, InterruptedException
{
System.out.println("----程序开始运行----");
Date date1 = new Date();

int taskSize = 5;
// 创建一个线程池
ExecutorService pool = Executors.newFixedThreadPool(taskSize);
// 创建多个有返回值的任务
List<Future> list = new ArrayList<Future>();
for (int i = 0; i < taskSize; i++)
{
Callable c = new MyCallable(i + " ");
// 执行任务并获取Future对象
Future f = pool.submit(c);
// System.out.println(">>>" + f.get().toString());
list.add(f);
}
// 关闭线程池
pool.shutdown();

// 获取所有并发任务的运行结果
for (Future f : list)
{
// 从Future对象上获取任务的返回值,并输出到控制台
System.out.println(">>>" + f.get().toString());
}

Date date2 = new Date();
System.out.println("----程序结束运行----,程序运行时间【" + (date2.getTime() - date1.getTime()) + "毫秒】");
}
}

class MyCallable implements Callable<Object>
{
private String taskNum;

MyCallable(String taskNum)
{
this.taskNum = taskNum;
}

public Object call()
throws Exception
{
System.out.println(">>>" + taskNum + "任务启动");
Date dateTmp1 = new Date();
Thread.sleep(1000);
Date dateTmp2 = new Date();
long time = dateTmp2.getTime() - dateTmp1.getTime();
System.out.println(">>>" + taskNum + "任务终止");
return taskNum + "任务返回运行结果,当前任务时间【" + time + "毫秒】";
}
}

  


作者:​​​panie​​​


标签:taskNum,System,println,Date,new,多线程,out
From: https://blog.51cto.com/u_15812342/5723973

相关文章

  • python的多线程
    一、线程的概念线程是CPU分配资源的基本单位。当一程序开始运行,这个程序就变成了一个进程,而一个进程相当于一个或者多个线程。当没有多线程编程时,一个进程相当于一个主线程......
  • Day13 多线程的总结
    Day13多线程学习消费者生产者问题关键仓库中只能存在一件商品,生产者将生产出来的产品放在仓库,消费者将仓库中的产品取走消费所以synchronized只能解决线程同步的问题......
  • 多线程爬取wallhaven
    前言最近整理自己的项目时,发现之前自己写的爬取wallhaven网站顿时有来的兴趣决定再写一遍来回顾自己以前学的知识网站地址:"https://wallhaven.cc/"1.url参数结构从ur......
  • Java多线程内存读写 —— 内存屏障的理解
    在现代计算机中,CPU往往都是多核的,而由于每个CPUCore中都有自己的高速缓存Cache,因此就会造成内存数据读写的不一致性,表现为 ​​指令乱序​​​ 与 ​​不可见性​​​ ......
  • 多线程分时系统线程安全问题-synchronize
    问题多线程分时系统是存在线程安全问题的,如下例子:两个线程分别对同一个变量(初始值=0)做循环自增和自减操作各50000次,观察结果,并不等于初始值。publicclass分时系统线......
  • 多线程详解
    线程简介任务、进程、线程、多线程Process进程Thread线程线程就是独立的执行路径在程序运行时,即使没有自己创建线程,后台也会有多个线程,如:主线程,gc线程;main()称之为......
  • 多线程环境下安全的集合
    多线程环境下安全的集合List/***并发修改异常多个线程同时操作一个不安全的集合*<p>*CopyOnWriteArrayList写时复制技术*add方法会先复制一个新数组对新......
  • C++多线程编程之【线程管理】
    1.如何启动线程?构建std::thread对象即可。直接传函数名(地址)创建一个类并创建伪函数。构建对象(实例化),将对象作为参数传入thread对象实例化。2.为什么要等待线程?首先......
  • 多线程
    1.线程和进程区别线程的划分尺度小于进程,这使多线程程序拥有高并发性,进程在运行时各内存单元之间相互独立,线程之间内存共享,这使多线程拥有更好的性能和用户体验。线程......
  • 【转载】Python -- 多进程、多线程 的基本使用
    https://www.cnblogs.com/jiyu-hlzy/p/15948408.html 单进程单线程importtimedefproduction():"""间隔一秒,模拟一秒生产一个任务,生产10个任务:ret......