摘要:
11.1ConcurrentHashMap 11.1.1 为什么要使用ConcurrentHashMap 在并发编程中使用HashMap可能导致程序死循环。而使用线程安全的HashTable效率又非常低下,基于以上两个原因,便有了ConcurrentHashMap的登场机会。 (1)线程不安全的Ha 阅读全文
posted @ 2022-03-14 23:30
Lz_蚂蚱
阅读(39)
评论(0)
推荐(0)
摘要:
10.1有助于提高锁性能的几点建议 10.1.1减少锁持有时间 对于使用锁进行并发控制的应用程序来说,如果单个线程特有锁的时间过长,会导致锁的竞争更加激烈,会影响系统的性能,在程序中需要尽可能减少线程对锁的持有时间,如下面代码: // 同步方法 public synchronized void sy 阅读全文
posted @ 2022-03-14 23:27
Lz_蚂蚱
阅读(83)
评论(0)
推荐(0)
摘要:
从面向对象设计的角度出发介绍几种保障线程安全的设计技术,这些技术可以使得我们在不必借助锁的情况下保障线程安全,避免锁可能导致的问题及开销。 9.1 Java 运行时存储空间 Java运行时(Java runtime)空间可以分为栈区,堆区与方法区(非堆空间);栈空间(Stack Space)为线程的 阅读全文
posted @ 2022-03-14 23:26
Lz_蚂蚱
阅读(45)
评论(0)
推荐(0)
摘要:
8.1 什么是线程池 Java中的线程池是运用场景最多的并发框架,几乎所有需要异步或并发执行任务的程序都可以使用线程池。在开发过程中,合理地使用线程池能够带来3个好处。 第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。 第二:提高响应速度。当任务到达时,任务可以不需要等到线 阅读全文
posted @ 2022-03-14 23:22
Lz_蚂蚱
阅读(89)
评论(0)
推荐(0)
摘要:
7.1线程组 类似于在计算机中使用文件夹管理文件,也可以使用线程组来管理线程,在线程组中定义一组相似(相关)的线程,在线程组中也可以定义子线程组。 Thread 类有几个构造方法允许在创建线程时指定线程组,如果在创建线程时没有指定线程组则该线程就属于父线程所在的线程组。 JVM 在创建 main 线 阅读全文
posted @ 2022-03-14 23:02
Lz_蚂蚱
阅读(58)
评论(0)
推荐(0)
摘要:
声明:此文章大部分内容来源<<ThreadLocal夺命11连问>>,加上一些自己附加内容。如果看到此篇文章,请优先查看大佬文章。 目录什么是ThreadLocal为什么要用ThreadLocal?ThreadLocal的API方法ThreadLocal源码剖析ThreadLocal的原理是什么?为 阅读全文
posted @ 2022-03-14 22:43
Lz_蚂蚱
阅读(155)
评论(0)
推荐(0)
摘要:
4.1 什么是等待通知机制 在单线程编程中,要执行的操作需要满足一定的条件才能执行,可以把这个操作放在 if 语句块中。在多线程编程中,可能 A 线程的条件没有满足只是暂时的,稍后其他的线程 B 可能会更新条件使得 A 线程的条件得到满足。可以将 A 线程暂停,直到它的条件得到满足后再将 A 线程唤 阅读全文
posted @ 2022-03-14 22:36
Lz_蚂蚱
阅读(63)
评论(0)
推荐(0)