2021年9月13日

Java 多线程 - happens-before规则

摘要: 总结 JMM可以通过happens-before关系向程序员提供跨线程的内存可见性保证(如果A线程的写操作a与B线程的读操作b之间存在happens-before关系,尽管a操作和b操作在不同的线程中执行,但JMM向程序员保证a操作将对b操作可见) happens-before定义 happens- 阅读全文

posted @ 2021-09-13 20:07 frank_cui 阅读(70) 评论(0) 推荐(0)

Java 多线程 - 线程池常用的阻塞队列有哪些

摘要: 一、线程池对应的阻塞队列 LinkedBlockingQueue 第一种阻塞队列是 LinkedBlockingQueue,它的容量是 Integer.MAX_VALUE,为 231 -1 ,是一个非常大的值,可以认为是无界队列。 FixedThreadPool 和 SingleThreadExec 阅读全文

posted @ 2021-09-13 14:49 frank_cui 阅读(2143) 评论(0) 推荐(0)

Java 多线程 - 创建线程池有哪几种方式?

摘要: 一、总结 有两种: 通过Executors工厂方法创建 通过new ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> 阅读全文

posted @ 2021-09-13 14:25 frank_cui 阅读(360) 评论(0) 推荐(0)

Java 多线程 - 为什么创建一个线程就开销大了?和创建一个普通 Java 对象有什么差别?

摘要: 频繁创建新线程有什么缺点? 1.不受控风险 系统资源有限,每个人针对不同业务都可以手动创建线程,并且创建标准不一样(比如线程没有名字)。当系统运行起来,所有线程都在疯狂抢占资源,无组织无纪律,内存很容易被无情榨干耗尽。 另外,过多的线程自然也会引起上下文切换的开销。 2.频繁创建开销大 new Th 阅读全文

posted @ 2021-09-13 13:43 frank_cui 阅读(1605) 评论(0) 推荐(0)

导航

levels of contents