01-线程-初
文章平均质量分 91
线程知识介绍
蚂蚁@叔叔
热爱软件技术,分享点滴知识
展开
-
13.Java多线程之Callable和Future接口
Callable和Future Callable接口定义了一个call方法可以作为线程的执行体,但call方法比run方法更强大: A、call方法可以有返回值 B、call方法可以申明抛出异常 Callable接口是JDK5后新增的接口,而且不是Runnable的子接口,所以Callable对象不能直接作为Thread的target。而且call方法还有一个返回值, call方法不能直接调用,它作为线程的执行体被调用。那么如何接收call方法的返回值?...转载 2021-06-19 14:05:18 · 325 阅读 · 0 评论 -
12.CountDownLatch,CyclicBarrier,Semaphore的原理
一:CountDownLatchCountDownLatch适用于在多线程的场景需要等待所有子线程全部执行完毕之后再做操作的场景。举个例子,早上部门开会,有人在上厕所,这时候需要等待所有人从厕所回来之后才能开始会议。1...转载 2021-06-19 10:52:03 · 167 阅读 · 0 评论 -
Java多线程问题
1、多线程有什么用?一个可能在很多人看来很扯淡的一个问题:我会用多线程就好了,还管它有什么用?在我看来,这个回答更扯淡。所谓”知其然知其所以然”,”会用”只是”知其然”,”为什么用”才是”知其所以然”,只有达到”知其然知其所以然”的程度才可以说是把一个知识点运用自如。OK,下面说说我对这个问题的看法:(1)发挥多核CPU的优势随着工业的进步,现在的笔记本、台式机乃至商用的应用服转载 2017-07-04 18:32:51 · 807 阅读 · 0 评论 -
11.线程的状态,线程池的构造方式,线程池的特性
一:线程的状态(1)初始状态 实现Runnable接口和继承Thread可以得到一个线程类,new一个实例出来,线程就进入了初始状态。(2) 就绪状态 1)就绪状态只是说你资格运行,调度程序没有挑选到你,你就永远是就绪状态。 2)调用线程的start()方法,此线程进入就绪状态。 3)当前线程sleep()方法结束,其他线程jo...原创 2018-09-30 20:30:26 · 267 阅读 · 0 评论 -
10.线程和线程池的区别,线程池有哪些,什么情况下使用
一:线程和线程池的区别(1)new Thread 的弊端 a. 每次new Thread时,新建对象性能差。 b. 线程缺乏统一管理,可能无限制新建线程,相互之间竞争,可能占用过多系统资源导致死机或oom。 c. 缺乏更多功能,如定时执行、定期执行、线程中断。(2)Java提供的四种线程池相比new Thread的优势 a. 重用存在的线程...原创 2018-09-30 19:51:01 · 2752 阅读 · 0 评论 -
9.线程池的实现,源码中常用的方法
一:程池的作用 线程池可以使线程复用,避免了每次线程都new一个新的线程,另外我们可以给线程池一个固定大小,从而避免了大量线程对CPU的占用。二:线程池的创建 在Java用有一个Executors工具类,可以为我们创建一个线程池,其本质就是new了一个ThreadPoolExecutor对象,ThreadPoolExecutor参数最全的构造方法:Thr...转载 2018-09-28 21:31:40 · 266 阅读 · 0 评论 -
8.线程池的队列一般设置多少
一、ThreadPoolExecutor的重要参数corePoolSize:核心线程数 核心线程会一直存活,及时没有任务需要执行 当线程数小于核心线程数时,即使有线程空闲,线程池也会优先创建新线程处理 设置allowCoreThreadTimeout=true(默认false)时,核心线程会超时关闭queueCapacity:任务队列容量(...原创 2018-09-24 14:49:03 · 30149 阅读 · 15 评论 -
7.线程池中的阻塞队列无限大是否合适
在设置线程池队列长度时,如果长度设置的不合理就无法发挥出多线程的威力。设置线程池的队列长度取决于使用场景;比如全程异步的系统,队列可以设置为0,corePoolSize设置为cpu核数。研究tomcat、Dubbo等业界成熟的产品是如何设置线程队列,分析如何合理设置线程池队列长度。1.JDK线程池策略 先增加线程至corePoolSize,之后放入队列,如果队列满则增...转载 2018-09-24 11:41:48 · 7236 阅读 · 0 评论 -
6.corePoolSize和maxPoolSize的区别
受限于硬件、内存和性能,我们不可能无限制的创建任意数量的线程,每一台机器允许的最大线程是一个有界值。因此ThreadPoolExecutor管理的线程数量是有界的。线程池就是用这些有限个数的线程,去执行提交的任务。但是对于多用户、高并发的应用来说,提交的任务数量非常巨大,会比允许的最大线程数多很多。为了解决这个问题,必须要引入排队机制,或者是在内存中,或者是在硬盘等容量很大的存储介质...转载 2018-09-24 11:41:19 · 16400 阅读 · 0 评论 -
5.线程池中变量的定义
1.线程池的概念 线程:进程中负责程序执行的执行单元。一个进程中至少有一个线程。 多线程:解决多任务同时执行的需求,合理使用CPU资源。多线程的运行是根据CPU切换完成,如何切换由CPU决定,因此多线程运行具有不确定性。 线程池:基本思想还是一种对象池的思想,开辟一块内存空间,里面存放了众多(未死亡)的线程,池中线程执行调度由池管理器来处理。当有线程任...原创 2018-09-24 11:41:04 · 1178 阅读 · 0 评论 -
4.线程池的运行机制
一、线程池原理1.1 使用线程池的好处第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。第二:提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。第三:提高线程的可管理性。线程是稀缺资源,如果无限制地创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一分配、调优和监控。1.2 线程池的实现原理当向线程池提交任务后,线程池...原创 2018-09-24 11:40:34 · 769 阅读 · 0 评论 -
3.多线程的理解
1.多线程的概念 解决多任务同时执行的需求,合理使用CPU资源。多线程的运行是根据CPU切换完成,如何切换由CPU决定,因此多线程运行具有不确定性。2.多线程的优势(1)发挥多核CPU的优势 随着工业的进步,现在的笔记本、台式机乃至商用的应用服务器至少也都是双核的,4核、8核甚至16核的也都不少见,如果是单线程的程序,那么在双核CPU上就浪费了50%,在4核...原创 2018-09-24 11:34:16 · 335 阅读 · 0 评论 -
2.线程的生命周期
线程的生命周期 线程是一个动态执行的过程,它也有一个从产生到死亡的过程。(1)生命周期的五种状态新建(new Thread) 当创建Thread类的一个实例(对象)时,此线程进入新建状态(未被启动)。 例如:Thread t1=new Thread();就绪(runnable) 线程已经被启动,正在等待被分配给CPU时间片,也就是说此时线程正...原创 2018-09-24 11:33:28 · 535 阅读 · 0 评论 -
1.java 线程常用工具类
一 Timer 定时器Timer 类主要是用来完成定时任务的功能,比如闹钟这种周期性变化的事物。** 1 一个最简单的定时器**两秒钟后引爆一个定时炸弹。 @Test public void test() { new Timer().schedule(new TimerTask() { @Override ...转载 2018-09-23 14:11:14 · 323 阅读 · 0 评论 -
目录
1:线程的工具类2:线程的生命周期3:多线程的理解4:线程池的运行机制5:线程池中变量的定义6:corePoolSize和maxPoolSize的区别7:线程池中的阻塞队列无限大是否合适8:线程池的队列一般设置多少9:线程池的实现,源码中常用的方法10:线程池和线程的区别,线程池有哪些,什么情况下使用,业务场景11:线程的状态,线程池的构造方式,常见线程池...原创 2018-09-23 14:05:54 · 233 阅读 · 0 评论 -
计算机网络
协议体系结构TCP协议概念三次握手为什么三次握手四次挥手为什么四次挥手SYN攻击对应的协议UDP协议TCP和UDP区别面向连接和非面向连接的服务的特点是什么面向连接非面向连接浏览器输入wwwbaiducom后执行的全过程涉及到的协议DNS域名系统交换机路由器网关交换机路由器网关所属层IP协议IP地址分类HTTP协议主要特点常用的H转载 2017-07-04 18:55:57 · 584 阅读 · 0 评论