摘要:1、CountDownLatch 计数器 CountDownLatch允许一个或多个线程等待其他线程完成操作。 应用场景:我们需要解析一个Excel里多个sheet的数据,此时可以考虑使用多线程,每个线程解析一个sheet里的数据,等到所有的sheet都解析完之后,程序需要提示解析完成。在这个需求中
阅读全文
摘要:一、 概述 本文首先介绍Lock接口、ReentrantLock的类层次结构以及锁功能模板类AbstractQueuedSynchronizer的简单原理,然后通过分析ReentrantLock的lock方法和unlock方法,来解释ReentrantLock的内部原理,最后做一个总结。本文不涉及R
阅读全文
摘要:面向报文(UDP)和面向字节流(TCP)的区别 面向报文的传输方式是应用层交给UDP多长的报文,UDP就照样发送,即一次发送一个报文。因此,应用程序必须选择合适大小的报文。若报文太长,则IP层需要分片,降低效率。若太短,会是IP太小。UDP对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的
阅读全文
摘要:Java创建一个对象,通常仅仅一个“new”关键字,在虚拟机中,有很长一个过程: 1、虚拟机遇到一个new的指令时候,先去常量池检查该类是否被加载、解析、初始化过,没有,执行类的加载过程 2、执行该对象的static代码块(静态初始块)。(如果有的话,给Person.class类进行初始化) 3、在
阅读全文
摘要:那些对象需要回收? 什么时候回收? 如何回收? 程序计数器、本地方法栈、虚拟机栈是线程隔离的,随线程的消亡而销毁 GC的范围 :堆、方法区。 一、回收之前:如何判断对象可以回收? 1、算法:引用计数算法 引用计数是垃圾收集器中的早期策略。在这种方法中,堆中每个对象实例都有一个引用计数。当一个对象被创
阅读全文
摘要:ThreadPoolExecutor 它的构造函数: public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable>
阅读全文
摘要:线程安全的实现方法 什么是线程安全? 线程安全:《JVM的高性能与最佳实践》有说,“多个线程访问同一个对象,如果我们不用考虑线程运行时的调度和交替执行,不用做额外的同步,或者在调用时候不用进行协调操作,调用的结果总是正确的结果,那么这个对象是线程安全的” 线程安全的对象具有以下特征:对象本身已经封装
阅读全文
摘要:注意: 原文链接:https://blog.csdn.net/duanduan_l/java/article/details/86505843 创建线程1、继承Thread类创建线程类 步骤: (1)创建Thread类的子类,并重写run方法,run方法的方法体代表该线程需要完成的任务; (2)创建
阅读全文