前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java之线程池知识整理

Java之线程池知识整理

作者头像
疯狂的KK
发布2019-08-16 15:15:10
3450
发布2019-08-16 15:15:10
举报
文章被收录于专栏:Java项目实战

因上一版本排版太乱,现重新发布

在开始整理之前先推荐我自己在用的笔记软件,以及常用的网站

笔记软件:

印象笔记

优点:客户端支持多端登录,且能设置权限访问,多端登录可同步笔记,允许存储文档,文字,图片

缺点:非会员只支持3个客户端登录,非会员每月流量限制 (会员140一年)

2.有道云笔记

优点:可支持PC端,APP端双端同步,内容存储量大,每天签到就能领空间

缺点:功能菜单较少,相对印象笔记分类功能少,一般月初用印象笔记,月中后用有道云

特别推荐高质量网站:

http://bj.96weixin.com/,微信公众号排版网站,提供素材

https://www.gaoding.com/稿定设计,封面,Logo等

http://www.nicetool.net/ 网如其名,非常Nice的网站

在整理知识点之前,小伙伴们又提出了问题

虽然重写了toString方法,而且还用到了StringBuilder拼接字符串,但是真正我认为在newhashMap的时候put进去的key对应的value已经生效,在外引用指向了新的对象,但是并不可能改变map的value值,所以结果仍是张三

除非引用指向变了在没有hashmap的情况打印结果会变

我们稍微改变下代码

public class Test02 {

public void changeValue1(int age){

age=30;

}

public void changeValue2(Person person){ person.setName("张三");

}

public void changeValue3(String str){

str="xxxx"; }

public static void main(String[] args) { /*Person person = new Person("张三"); //HashMapmap = new HashMap<>(); //map.put("person",person);

person = new Person("李四"); System.out.println(person.toString());*/

Test02 test02 = new Test02();

int age=20;

test02.changeValue1(age); System.out.println("age: \t"+age);

Person person = new Person("李四"); test02.changeValue2(person); System.out.println("personName:\t"+person.getName());

String str="abc";

test02.changeValue3(str); System.out.println(str);

}}

class Person{

private String name;

Person(String name){

this.name=name;

}

public String getName() {

return name; }

public void setName(String name) {

this.name = name; }

@Override

public String toString() {

final StringBuilder sb=new StringBuilder("Person{"); sb.append("name=").append(name).append('\''); sb.append('}'); return sb.toString(); }}

猜一下运行结果,文末贴出结果

#######分割线#######

线程池---ThreadPool

线程池,数据库连接池等池化技术,意在将所需功能提前创建,等待使用,来降低资源消耗,提高响应速度,易于管理的技术

线程池的特点主要是:线程复用,控制最大并发数,管理线程

线程池是通过Executor框架实现的。该框架用到了Executor,Executors,ExecutorService,ThreadPoolExecutor这几个类。

线程池有几种? 5种

看源码:打开Executors类-->

常用得是三种

newFixedThreadPool

newSingleThreadExecutor

newCachedThreadPool

实际用的是哪一种?

打开阿里巴巴开发手册1.40版本

详细的列出应该用ThreadPoolExecutor,且列出了不能用的原因

当我们用ThreadPoolExecutor去创建线程池的时候,就需要我们填写相应的参数

idea已经显示提示一些参数意义,线程池共7大参数,

int corePoolSize:常驻线程数

int maximumPoolSize:线程池同时执行的最大线程数,>=1

long keepAliveTime:空闲线程的存活时间

TimeUnit unit:keepAliveTime的单位

BlockingQueueworkQueue:被提交等待被执行的任务

ThreadFactory threadFactory:工作线程的线程工厂

RejectedExecutionHandler handler:线程池拒绝策略

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-05-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 赵KK日常技术记录 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档