进化之路:线程池来帮忙,却好心办坏事
package threadlocal;import java.text.SimpleDateFormat;
import java.util.Date;/*** 描述: 10个线程打印日期*/
public class ThreadLocalNormalUsage01 {public static void main(String[] args) throws InterruptedException {for (int i = 0; i < 30; i++) {int finalI = i;new Thread(new Runnable() {@Overridepublic void run() {String date = new ThreadLocalNormalUsage01().date(finalI);System.out.println(date);}}).start();Thread.sleep(100);}}public String date(int seconds) {//参数的单位是毫秒,从1970.1.1 00:00:00 GMT计时Date date = new Date(1000 * seconds);SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");return dateFormat.format(date);}
}
package threadlocal;import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.concurrent.Executor;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;/*** 描述: 1000个打印日期的任务,用线程池来执行*/
public class ThreadLocalNormalUsage02 {public static ExecutorService threadPool = Executors.newFixedThreadPool(10);public static void main(String[] args) throws InterruptedException {for (int i = 0; i < 1000; i++) {int finalI = i;threadPool.submit(new Runnable() {@Overridepublic void run() {String date = new ThreadLocalNormalUsage02().date(finalI);System.out.println(date);}});}threadPool.shutdown();}public String date(int seconds) {//参数的单位是毫秒,从1970.1.1 00:00:00 GMT计时Date date = new Date(1000 * seconds);SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");return dateFormat.format(date);}
}
package threadlocal;import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;/*** 描述: 1000个打印日期的任务,用线程池来执行*/
public class ThreadLocalNormalUsage03 {public static ExecutorService threadPool = Executors.newFixedThreadPool(10);static SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");public static void main(String[] args) throws InterruptedException {for (int i = 0; i < 1000; i++) {int finalI = i;threadPool.submit(new Runnable() {@Overridepublic void run() {String date = new ThreadLocalNormalUsage03().date(finalI);System.out.println(date);}});}threadPool.shutdown();}public String date(int seconds) {//参数的单位是毫秒,从1970.1.1 00:00:00 GMT计时Date date = new Date(1000 * seconds);return dateFormat.format(date);}
}
进化之路:线程池来帮忙,却好心办坏事相关推荐
- 程序员修仙之路--设计一个实用的线程池
菜菜呀,我最近研究技术呢,发现线上一个任务程序线程数有点多呀 CEO,CTO,CFO于一身的CXO x总,你学编程呢? 菜菜 作为公司总负责人,我以后还要管理技术部门呢,怎么能不会技术呢 CEO,CT ...
- 面试-线程池的成长之路
转载自 面试-线程池的成长之路 背景 相信大家在面试过程中遇到面试官问线程的很多,线程过后就是线程池了.从易到难,都是这么个过程,还有就是确实很多人在工作中接触线程池比较少,最多的也就是创建一个然 ...
- Python之路【第八篇】python实现线程池
线程池概念 什么是线程池? 诸如web服务器.数据库服务器.文件服务器和邮件服务器等许多服务器应用都面向处理来自某些远程来源的大量短小的任务. 构建服务器应用程序的一个过于简单的模型是:每当一个请求到 ...
- Java面试经典题:线程池的成长之路
本文转载自公众号: 猿天地 1.背景 相信大家在面试过程中遇到面试官问线程的很多,线程过后就是线程池了.从易到难,都是这么个过程,还有就是确实很多人在工作中接触线程池比较少,最多的也就是创建一个然后往 ...
- C++强化之路之线程池开发整体框架(二)
一.线程池开发框架 我所开发的线程池由以下几部分组成: 1.工作中的线程.也就是线程池中的线程,主要是执行分发来的task. 2.管理线程池的监督线程.这个线程的创建独立于线程池的创建,按照既定的 ...
- 【java学习之路】(java SE篇)011.线程池
线程池 为什么需要线程池 在实际使用中,线程非常的占用资源,对其管理不善很容易造成系统问题.因此在大多数并发框架中,都会使用线程池来管理线程 好处 使用线程池可以重复利用已有的线程继续执行任务,避免线 ...
- 程序员修仙之路-数据结构之设计一个高性能线程池
原因排查 经过一个多小时的代码排查终于查明了线上程序线程数过多的原因:这是一个接收mq消息的一个服务,程序大体思路是这样的,监听的线程每次收到一条消息,就启动一个线程去执行,每次启动的线程都是新的.说 ...
- 大厂之路一由浅入深、并行基础、源码分析一 “J.U.C.L”之线程池(最全,最深,最喜欢)
参考博客: 点击!!!!!点击!!!!!点击!!!!!点击!!!!!点击!!!!!点击!!!!!延迟队列详情点击!!主要参考,点击!!!!! 为什么提出线程池? 什么是线程池技术? 什么时候用线程池计 ...
- java线程池_Java 并发编程 线程池源码实战
作者 | 马启航 杏仁后端工程师.「我头发还多,你们呢?」 一.概述 笔者在网上看了好多的关于线程池原理.源码分析相关的文章,但是说实话,没有一篇让我觉得读完之后豁然开朗,完完全全的明白线程池,要么写 ...
最新文章
- Java学习总结:51(对象序列化)
- 《TensorFlow技术解析与实战》——第3章 可视化TensorFlow 3.1PlayGround
- 从大数据到安全大数据分析
- 从软件到数件,AI生态如何建立自己的“Android”?天云数据CEO直播详解,可预约 | 量子位·视点...
- 虚拟化服务器端口用万兆,万兆以太网部署需要注意的方面有哪些
- sqlserver2008 获取最后插入的id_Python3操作SQL Server2008数据库
- SpringBoot 配置文件 application.properties(二)
- 【英语学习】【Level 07】U05 Best Destination L1 Float and shop
- 看一次广告听30分钟歌 你愿意为QQ音乐新功能买单吗?
- 9月30日或成年内最难打车日 滴滴1亿补贴鼓励司机师傅多接单
- C#分析URL参数获取参数和值得对应列表(一)
- android auto凯迪拉克,凯迪拉克支持Apple CarPlay及Android Auto
- 如何判断对方列表里是不是好友_QQ怎么知道自己是不是对方好友
- MT6755芯片资料文档
- Ubuntu14.10 更新源
- Python pypinyin库,实现文字转拼音
- 耳机声音一边大一边小
- Java 实现多继承
- 软件测试面试题 | 提BUG相关
- 网页设计中的灰色调配色技巧