一、多线程基础基础知识1. 并发编程1.1 并发编程的优缺点优点:充分利用多核CPU的计算能力,通过并发编程的形式将多核CPU的计算能力发挥到极致,性能得到提升。方面进行业务的拆分。提高系统并发能力和性能:高并发系统的开发,并发编程会显得尤为重要,利用好多线程机制可以大大提高系统的并发能力及性能;面对复杂的业务模型,并行程序会比串行程序更适应业务需求,而并发 ......
241
0
0
2023-05-24
多线程 编程模型线程 安全名词串行、并发和并行 串行:一个人,将任务一个一个完成 并发:一个人,有策略地同时做多件事情 并行:多个人,每人做一个事情 竞态 名词 竞态 共享变量 竞态产生的条件 read-modify-write check-then-act 线程安全性 如果一个类在多线程环境下无需做任何改变也能运作正常 ......
272
0
0
2023-05-24
什么是 线程池 在 Java 中,创建一个线程可以通过继承Thread或者实现Runnable接口来实现,但是,如果每个请求都创建一个新线程,那么创建和销毁线程花费的时间和消耗的系统资源都相当大,甚至可能要比在处理实际的用户请求的时间和资源要多的多。为了解决这个问题,就有了线程池的概念,线程池的核心逻辑是提前创建好若干个线程放在一个容器种。如果有任务需要处 ......
205
0
0
2023-05-24
前言多线程 大家肯定都不陌生,理论滚瓜烂熟,八股天花乱坠,但是大家有多少在代码中实践过呢?很多人在实际开发中可能就用用@Async,new Thread()。 线程池 也很少有人会自己去建,默认的随便用用。在工作中大家对于多线程开发,大多是用在异步,比如发消息,但是对于提效这块最重要的优势却很少有人涉及。因此本篇文章会结合我自己的工作场景带大家去发掘项目中的 ......
278
0
0
2023-05-23
目录:一、 多线程 是什么? 进程进程 vs 线程二、为什么要用多线程? 三、怎么实现多线程? 1、继承Thread类2、实现Runnable接口3、通过Callable和Future创建线程:四、多线程如何管理 1、线程生命周期管理2、线程优先级3、守护线程4、线程的协作5、 线程池 (重点)五、多线程会到来什么问题?怎么解决? 1、线程安全问题2、 线程 ......
245
0
0
2023-05-21
目录并发问题的症状多线程put后可能导致get死循环多线程put的时候可能导致元素丢失put非null元素后get出来的却是nullHashMap数据结构HashMap的rehash源代码正常的ReHash过程并发的Rehash过程三种解决方案Hashtable替换HashMapCollections.synchronizedMap将HashMap包装起来C ......
242
0
0
2023-05-21
目录为每个客户分配一个线程创建线程池使用 Java 提供的线程池使用线程池的注意事项一个典型的单线程服务器示例如下:while (true) { Socket socket = null; try { // 接收客户连接 socket = serverSocket.accept(); ......
261
0
0
2023-05-19
目录介绍什么是ThreadLocal?ThreadLocal 的作用是什么?如何使用ThreadLocal如何创建一个ThreadLocal实例ThreadLocal的实现原理ThreadLocal的内部数据结构Thread类:ThreadLocal的set()方法:ThreadLocalMap和ThreadLocalMap.Entry的实现ThreadLo ......
309
0
0
2023-05-12
目录前言为什么用线程池参数介绍核心线程数和最大线程数设置使用示例线程池执行任务的流程线程池执行流程图源码解读基础属性和变量execute(Runnable command)addWorker(Runnable firstTask, boolean core)runWorker(this)processWorkerExit(Worker w, boolean ......
287
0
0
2023-05-10
目录线程安全性死锁定义实现一个死锁查看死锁解决死锁其他线程安全问题单例模式线程安全性线程安全是指我们所写的代码在并发情况下使用时,总是能表现出正确的行为;反之,未实现线程安全的代码,表现的行为是不可预知的,有可能正确,实现线程安全的方式:线程封闭就是把对象封装到一个线程里,只有这一个线程能看到此对象。实现线程封闭的方式如下:栈封闭这里是指每个线程自己的线程栈 ......
309
0
0
2023-05-10
目录细节介绍代码部分定时任务类记录信息类复制线程类复制工具类总结上次写了一个利用 RandomAccessFile 和 多线程实现的多线程复制,但是没有增加断点复制的功能。这里的断点复制是指:当程序执行中断时(出现错误、断电关机),仍可以从上次复制过程中重新开始(不必从头开始复制)。 多线程复制博客细节介绍我这里是使用一个Timer类(java.util.T ......
284
0
0
2023-05-05
目录Java多线程和流的应用RamdomAccessFile多线程本地文件复制(完整代码)多线程网络下载(完整代码)测试代码及结果总结Java多线程和流的应用最近看到了一个例子,是使用多线程的方式下载文件,感觉很有趣,探索了一下,并且尝试了使用多线程进行本地复制文件。写完之后,发现了这两个其实很相似,无论是本地文件复制,还是网络多线程下载,对于流的使用都是一 ......
288
0
0
2023-05-05
目录理论知识源码论证总结上篇文章已经对Synchronized关键字做了初步的介绍,从字节码层面介绍了Synchronized关键字,最终字节码层面就是monitorenter和monitorexit字节码指令。并且拿Synchronized关键字和Java的JUC包下的ReentrantLock做了比较。Synchronized关键字的初体验-超链接地址那 ......
266
0
0
2023-05-03
java多线程锁多线程程序是并发编程的核心,而Java多线程锁则是保证线程安全的重要手段。但是,不同类型的锁适用于不同的场景,而正确地选择锁对于程序的性能和正确性至关重要。在本文中,我们将深入探讨Java多线程锁的工作原理和最佳实践。多线程模型Java的多线程模型是基于线程的抢占式调度机制,它允许多个线程同时执行,并且使用共享内存来实现线程间通信。可以看出, ......
264
0
0
2023-04-29
目录1、一个示例回顾Future2、通过CompletableFuture实现上面示例3、CompletableFuture创建方式3.1、常用的4种创建方式3.2、结果获取的4种方式4、异步回调方法4.1、thenRun/thenRunAsync4.2、thenAccept/thenAcceptAsync4.3、 thenApply/thenApplyAs ......
395
0
0
2023-04-29