java基础
文章平均质量分 89
java se常用api
好汉不吃草
Accept your ordinary and try your best to be different.
展开
-
从ReentrantLock到AQS源码阅读
ReentrantLock是使用AQS实现的一种可重入的独占锁,并且提供了公平和非公平两种策略。ReentractLock的内部类Sync继承了AbstractQueuedSynchronizer抽象类,并且提供了两个内部类FairSync和NonfairSync(即公平锁与非公平锁的落地实现),而具体采用哪一种加锁策略则则是由ReentractLock的构造函数进行指定。public ReentrantLock() { sync = new NonfairSync();}public R原创 2022-01-13 13:59:29 · 524 阅读 · 0 评论 -
ThreadLocal源码阅读笔记
功能描述ThreadLocal解决了访问共享变量的阻塞问题,并且不需要像CAS操作一样牺牲CPU资源,它为每一个线程维护了一个变量副本,每个线程在访问ThrealLocal里面的变量时实际上访问的是自己线程内的变量副本,并且这个线程内的变量副本与其他线程的变量副本相互隔离,互不影响。也就是说,ThreadLocal包裹的变量是线程级变量。源码解刨ThreadLocal通过一个内部类ThreadLocalMap进行数据的保存,并将自己本身作为key,从get方法入手。public T get() {原创 2022-01-13 13:59:12 · 387 阅读 · 0 评论 -
LongAdder源码阅读笔记
一、功能描述LongAdder通过创建多个副本对象,解决了多线程使用CAS更新同一个对象造成的CPU阻塞,加快了对线程处理的速度。当多个线程同一时刻更新一个AtomicLong类型的变量时,只有一个线程能够更新成功,其他线程则更新失败,继续尝试更新。当使用LongAdder类型的变量时,由于副本数组的存在,线程不一定直接更新变量的本身而是更新副本数组,这样多线程请求的对象变多了,从而减少了更新时间,当需要使用变量值时,返回的值是基础变量的值加上数组内每一个副本的值的和。二、源码解读LongAdd原创 2022-01-13 13:57:58 · 265 阅读 · 0 评论 -
Java中常见的时间日期类
Date类在整个JAVA程序的设计过程之中,日期时间是一个非常重要的话题,同时几乎所有的项目开发都不可能离开日期时间的处理操作,而整个Java里面对于日期时间也提供有一系列的工具类供开发者使用。java.util.Date 类是Java之中获得日期时间的最简单的程序类,这个类可以通过直接实例化Date类对象的形式获取当前的日期时间。范例:获取当前的日期时间import java.util....原创 2020-08-07 13:04:27 · 657 阅读 · 0 评论 -
Java 网络编程
Java开发网络程序如果想进行网络程序的开发,最简单的应用实现就是可以通过java.net开发包来实现,在这个包中有两个类:java.net.ServerSocket 工作在服务器端的程序,主要是定义服务监听端口,以及接收客户端请求。java.net.Socket 每一个客户端都使用一个Socket的概念来描述。1. 基础网络程序1.1 范例:实现服务器端程序的定义import ...原创 2020-04-14 17:39:13 · 148 阅读 · 0 评论