![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Thread
文章平均质量分 91
W|J
你很懒,还没有添加简介
展开
-
简单使用ThreadLocal、FunctionalInterface、CompletableFuture
数据迁移、涉及上万条数据,使用Job利用多线程处理。ThreadLocal的引入不必有多少条数据处理New 多少个Req对象 CompletableFuture 还使用以下策略实现接口CompletionStage,then***方法 可将一个任务产分成多份。代码中。将下载-》上传-》更新 拆分成了三部分。方便日志的记录 使用了CompletionStage handleAsync()方法对以上三步进行异常总结 为了记录成功、失败、异常的次数使用了atomic的LongAdder...原创 2022-06-24 16:57:53 · 486 阅读 · 0 评论 -
Java并发编程第三模块讲_死锁、final不变性与String、QAS
第 1 个叫互斥条件,它的意思是每个资源每次只能被一个线程(或进程,下同)使用,为什么资源不能同时被多个线程或进程使用呢?这是因为如果每个人都可以拿到想要的资源,那就不需要等待,所以是不可能发生死锁的。第 2 个是请求与保持条件,它是指当一个线程因请求资源而阻塞时,则需对已获得的资源保持不放。如果在请求资源时阻塞了,并且会自动释放手中资源(例如锁)的话,那别人自然就能拿到我刚才释放的资源,也就不会形成死锁。第 3 个是不剥夺条件,它是指线程已获得的资源,在未使用完之前,不会被强行剥夺。比如我们在上一课时中介原创 2022-06-07 17:47:38 · 230 阅读 · 0 评论 -
Java并发编程第三讲_内存模型、指令重排、可见性(happens-before、volitile)
JVM 内存结构 -和 Java 虚拟机的运行时区域有关;我们都知道,Java 代码是要运行在虚拟机上的,而虚拟机在执行 Java 程序的过程中会把所管理的内存划分为若干个不同的数据区域,这些区域都有各自的用途。在《Java 虚拟机规范(Java SE 8)》中描述了 JVM 运行时内存区域结构可分为以下 6 个区。堆区(Heap):堆是存储类实例和数组的,通常是内存中最大的一块。实例很好理解,比如 new Object() 就会生成一个实例;而数组也是保存在堆上面的,因为在 Ja......原创 2022-05-30 22:19:05 · 140 阅读 · 0 评论 -
Java并发编程第二讲_ThreadLocal、Future、CountDwonlatch等线程配合工具
ThreadLocal 适合用在哪些实际生产的场景场景1,ThreadLocal 用作保存每个线程独享的对象,为每个线程都创建一个副本,这样每个线程都可以修改自己所拥有的副本, 而不会影响其他线程的副本,确保了线程安全。场景2,ThreadLocal 用作每个线程内需要独立保存信息,以便供其他方法更方便地获取该信息的场景。每个线程获取到的信息可能都是不一样的,前面执行的方法保存了信息后,后续方法可以通过 ThreadLocal 直接获取到,避免了传参,类似于全局变量的......原创 2022-05-29 11:35:51 · 436 阅读 · 0 评论 -
Java并发编程第二讲-ConcurrentHashMap、CopyOnWriteArrayList、阻塞队列、原子类Atomic
为什么Map的桶中超过8个才转为红黑树?每次遍历一个链表,平均查找的时间复杂度是O(),n是链表的长度链表还不是很长,O(n)和O(log(n)的区别不大如果链表越来越长,那么这种区别便会有所体现为了提升查找性能,需要把链表转化为红黑树的形式表容量变成64因为树节点大约是普通节点的两倍大,我们只有当容器包含足够的节点时才使用它们(见TREEIFY_THRESHOLD)。当它们变得太小时(由于移除或调整大小)它们被转换回普通bins。在TreeNodes需要占用的空间大约是普通.原创 2022-05-25 19:01:52 · 314 阅读 · 0 评论 -
Java并发编程第二讲-各种各样的锁
你知道有哪几种锁?分别有什么特点?1.锁的7大分类2.偏向锁/轻量级锁/重量级锁偏向锁如果自始至终,对于这把锁都不存在竞争,那么其实就没必要上锁,只需要打个标记就行了,这就是偏向锁的思想。一个对象被初始化后,还没有任何线程来获取它的锁时,那么它就是可偏向的,当有第一个线程来访问它并尝试获取锁的时候,它就将这个线程记录下来,以后如果尝试获取锁的线程正是偏向锁的拥有者,就可以直接获得锁,开销很小,性能最好。轻量级锁JVM开发者发现在很多情况下,synchronized中的代码是被多个线程交替...原创 2022-05-15 16:45:11 · 345 阅读 · 0 评论 -
Java并发编程第一讲-线程基础(补充线程安全、线程池)
实现线程的方式实现 Runnable 接口实现多线程public class RunnableThread implements Runnable { @Override public void run() { System.out.println("实现Runnable接口 实现线程"); }}继承 Thread 类public class ExtendThread extends Thread { ......原创 2022-04-30 23:41:54 · 119 阅读 · 0 评论 -
线程安全问题
共有哪3类线程安全问题?发布和初始化导致线程安全问题public class WrongInit { private Map<Integer, String> students; public WrongInit() { new Thread(new Runnable() { @Override public void run() { students = ...原创 2022-04-30 23:41:18 · 888 阅读 · 0 评论 -
多线程的使用,同步锁的应用场景,线程的状态
1.类继承Thread类,[重写run()方法,]调用start(),不适合资源共享。2.类实现Runable接口,[重写run()方法,]调用start()原创 2021-05-15 16:51:46 · 424 阅读 · 0 评论