并发
sinaihalo
这个作者很懒,什么都没留下…
展开
-
生产者消费者多线程安全容器
1 Concurrent并发包BlockingQueue接口,实现类:ArrayBlockingQueue、LinkedBlockingQueue。2 解决问题:队列无数据,消费线程都会被自动阻塞(挂起);队列满数据,生产线程自动阻塞(挂起)3 注意:ArrayBlockingQueue存和取共用同一个锁对象,原因:轻巧,分离锁性能不占便宜;默认非公平锁,公平锁需修改。...原创 2018-09-05 21:57:13 · 256 阅读 · 0 评论 -
jstack多线程代码调试
top -Htop - 14:17:54 up 1 day, 23:30, 3 users, load average: 1.00, 1.01, 1.00 Tasks: 797 total, 2 running, 795 sleeping, 0 stopped, 0 zombie Cpu(s): 34.3%us, 0.7%sy, 0.0%ni, 65.0%id, 0....原创 2018-09-06 21:38:23 · 290 阅读 · 0 评论 -
java 多线程 匿名内部类
java 多线程 匿名内部类原创 2017-09-09 10:48:25 · 247 阅读 · 0 评论 -
线程池创建解析
阿里编程规范不推荐Executors,通过ThreadPoolExecutor创建,明确线程池运行规则,避免资源耗尽。Executors弊端:newSingleThreadExecutor和newSingleThreadExecutor,队列创建用new LinkedBlockingQueue(),允许的请求队列长度为 Integer.MAX_VALUE,可能会堆积大量的请求,从而导致 OOM...原创 2019-02-13 15:52:45 · 123 阅读 · 0 评论 -
线程超时释放
如果线程池线程资源耗尽,而线程又不释放,无疑是很严重的问题。思路:1.newFixedThreadPool 的Future类get方法可以设置超时时间2.自己写监控线程,demo如下:package filesearch;public class StopTest { public static void main(String[] args) { int i = 0; Wo...原创 2019-08-26 17:00:09 · 911 阅读 · 0 评论 -
quartz
项目中一直是用默认配置,没有深入了解。项目中用RAM-based scheduler,还有其他类型scheduler初始化配置,修改线程池参数等。默认当前工作目录加载quartz.props,没有加载jar中props。配置文件优于代码初始化,方便改动代码Properties props = new Properties(); props.put(StdSchedulerFactor...原创 2019-08-27 11:28:14 · 113 阅读 · 0 评论 -
死锁
package thread;public class DeadLock { public static void main(String[] args) { System.out.println("start the example------"); final Object obj_1 = new Object(); final Object obj_2 = new Obje...原创 2019-08-29 09:21:25 · 125 阅读 · 0 评论