随笔分类 - Multi_Thread多线程

Multi_Thread 多线程
摘要:可返回值的任务必须实现Callable接口,类似的,无返回值的任务必须Runnable接口。执行Callable任务后,可以获取一个Future的对象,在该对象上调用get就可以获取到Callable任务返回的Object了,再结合线程池接口ExecutorService就可以实现传说中有返回结果的 阅读全文
posted @ 2019-10-24 19:43 aspirant 阅读(3341) 评论(0) 推荐(0) 编辑
摘要:自己写了个函数,开了个主线程,然后在主线程上面开了个子线程,但是在调试的时候,总是无缘无故的子线程终止了,没有任何缘由。 后来同事点拨才知道,我们调试的时候,因为主线程终止了,所以子线程你在调试的时候也终止了,并不是代码的问题。 如果想调试,需要阻塞5分钟,这样就可以看到子线程的运行了。 代码如下: 阅读全文
posted @ 2019-10-21 11:16 aspirant 阅读(534) 评论(0) 推荐(0) 编辑
摘要:(1) https://fastthread.io/ 将线程 jstack pid 出来之后,压缩一下成为zip 然后 上传上去 阅读全文
posted @ 2019-07-04 15:36 aspirant 阅读(1670) 评论(0) 推荐(0) 编辑
摘要:newCachedThreadPool的线程池特点: (1)它是一个可以无限扩大的线程池;它比较适合处理执行时间比较小的任务;corePoolSize为0,maximumPoolSize为无限大,意味着线程数量可以无限大;keepAliveTime为60S,意味着线程空闲时间超过60S就会被杀死;采 阅读全文
posted @ 2019-04-18 17:41 aspirant 阅读(1009) 评论(0) 推荐(0) 编辑
摘要:对象池技术是一种常见的对象缓存手段。’对象’意味着池中的内容是一种结构化实体,这也就是一般意义上面向对象中的对象模型;’池’(或动词池化)意味着将有生命周期的对象缓存到’池子’中进行管理,即用即取。缓存的目的大多是为了提升性能,对象池技术的目的也即如此。所以,对象池技术的本质简单来说就是:将具有生命 阅读全文
posted @ 2019-04-04 16:50 aspirant 阅读(1145) 评论(0) 推荐(0) 编辑
摘要:自己的项目中用到了 对象池 commons-pool: 对象的创建和销毁在一定程度上会消耗系统的资源,虽然jvm的性能在近几年已经得到了很大的提高,对于多数对象来说,没有必要利用对象池技术来进行对象的创建和管理。但是对于有些对象来说,其创建的代价还是比较昂贵的,比如线程、tcp连接、rpc连接、数据 阅读全文
posted @ 2019-04-04 16:43 aspirant 阅读(1098) 评论(0) 推荐(0) 编辑
摘要:我们的项目用到了ThreadGroup 把thread放到了threadGroup中,名称统一起来了; ThreadGroup 可以把thread的名字统一起来。一起处理catch。 ThreadGroup是Java提供的一种对线程进行分组管理的手段,可以对所有线程以组为单位进行操作,如设置优先级、 阅读全文
posted @ 2019-04-02 17:49 aspirant 阅读(7600) 评论(0) 推荐(0) 编辑
摘要:系统里面用到了线程池: 我查了一下:一 Java通过Executors提供四种线程池,分别为: newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。 newFixedThreadPool 创建一个定长线程池,可控制线程最 阅读全文
posted @ 2019-04-01 18:10 aspirant 阅读(3835) 评论(0) 推荐(0) 编辑
摘要:一般情况下,当我们频繁的使用线程的时候,为了节约资源快速响应需求,我们都会考虑使用线程池,线程池使用完毕都会想着关闭,关闭的时候一般情况下会用到shutdown和shutdownNow,这两个函数都能够用来关闭线程池,那么他们俩之间的区别是什么呢?下面我就用一句话来说明白shutdown和shutd 阅读全文
posted @ 2019-01-14 11:20 aspirant 阅读(14182) 评论(3) 推荐(1) 编辑
摘要:很多小伙伴在学习Java的时候,总是感觉Java多线程在实际的业务中很少使用,以至于不会花太多的时间去学习,技术债不断累积!等到了一定程度的时候对于与Java多线程相关的东西就很难理解,今天需要探讨的东西也是一样的和Java多线程相关的!做好准备,马上开车! 学过Java多线程的应该都知道什么是锁, 阅读全文
posted @ 2018-06-19 18:09 aspirant 阅读(968) 评论(0) 推荐(0) 编辑
摘要:爱奇艺的面试官问 (1) 线程池是如何关闭的 (2) 如何确定线程池的数量 一、线程池销毁,停止线程池 ThreadPoolExecutor提供了两个方法,用于线程池的关闭,分别是shutdown()和shutdownNow(),注意,他们都不调用stop(),仅仅调用interrrupt)(函数; 阅读全文
posted @ 2018-06-14 19:07 aspirant 阅读(1004) 评论(0) 推荐(0) 编辑
摘要:线程属于一次性消耗品,在执行完run()方法之后线程便会正常结束了,线程结束后便会销毁,不能再次start,只能重新建立新的线程对象,但有时run()方法是永远不会结束的。例如在程序中使用线程进行Socket监听请求,或是其他的需要循环处理的任务。在这种情况下,一般是将这些任务放在一个循环中,如wh 阅读全文
posted @ 2018-06-14 19:03 aspirant 阅读(1580) 评论(0) 推荐(0) 编辑
摘要:去百度面试,二面的时候 面试官问 如果我想跟踪一个请求,从接收请求,处理到返回的整个流程,有没有好的办法,后来面试官说了 Threadlocal 可以做到传递参数。 这是ThreadLocal的一个功能。很多人可能不知道,因为threadlocal 是局部变量,只要线程不销毁,就会一直存在,因此可以 阅读全文
posted @ 2018-06-14 17:04 aspirant 阅读(4374) 评论(1) 推荐(0) 编辑
摘要:天A君突然发现自己的接口请求量突然涨到之前的10倍,没多久该接口几乎不可使用,并引发连锁反应导致整个系统崩溃。如何应对这种情况呢?生活给了我们答案:比如老式电闸都安装了保险丝,一旦有人使用超大功率的设备,保险丝就会烧断以保护各个电器不被强电流给烧坏。同理我们的接口也需要安装上“保险丝”,以防止非预期 阅读全文
posted @ 2018-05-26 16:23 aspirant 阅读(8952) 评论(1) 推荐(0) 编辑
摘要:ThreadLocal 也可以跟踪一个请求,从接收请求,处理请求,到返回请求,只要线程不销毁,就可以在线程的任何地方,调用这个参数,这是百度二面的题目,参考: Threadlocal 传递参数(百度二面) Threadlocal 传递参数(百度二面) 总结: 那么如何有效的避免呢? 事实上,在Thr 阅读全文
posted @ 2018-05-04 15:52 aspirant 阅读(15545) 评论(4) 推荐(10) 编辑
摘要:thread的run 和start的区别参考:多线程-Thread的run()与start()的区别 一、Thread的几个重要方法: 我们先了解一下Thread的几个重要方法。 a、start()方法,开始执行该线程;b、stop()方法,强制结束该线程执行;c、join方法,等待该线程结束。d、 阅读全文
posted @ 2018-04-21 11:36 aspirant 阅读(8734) 评论(2) 推荐(3) 编辑
摘要:总结: 1) start: 用start方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码。通过调用Thread类的start()方法来启动一个线程,这时此线程处于就绪(可运行)状态,并没有运行, 然后通过此Thread类调用方法run()来完成其运行 阅读全文
posted @ 2018-04-19 08:19 aspirant 阅读(1668) 评论(0) 推荐(0) 编辑
摘要:只有runnable到running时才会占用cpu时间片,其他都会出让cpu时间片。线程的资源有不少,但应该包含CPU资源和锁资源这两类。sleep(long mills):让出CPU资源,但是不会释放锁资源。wait():让出CPU资源和锁资源。 1. Thread.sleep(long) 和T 阅读全文
posted @ 2018-04-18 18:05 aspirant 阅读(12904) 评论(0) 推荐(7) 编辑
摘要:注意:该随笔内容完全引自http://wsmajunfeng.iteye.com/blog/1629354,写的很好,非常感谢,复制过来算是个积累,怕以后找不到。 一. 前言 在新增的Concurrent包中,BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题。通过这些高 阅读全文
posted @ 2018-03-27 15:39 aspirant 阅读(20621) 评论(0) 推荐(1) 编辑
摘要:本篇文章主要讲了lock的原理 就是AQS算法,还有个姊妹篇 讲解synchronized的实现原理 也是阿里经常问的, 参考:深入分析Synchronized原理(阿里面试题) 一定要看后面的文章,先说结论: 非公平锁tryAcquire的流程是:检查state字段,若为0,表示锁未被占用,那么尝 阅读全文
posted @ 2018-03-27 15:25 aspirant 阅读(12372) 评论(1) 推荐(7) 编辑