
java源码
kobexzf
这个作者很懒,什么都没留下…
展开
-
linux io
同步非阻塞io:数据未准备好则轮询,准备好后需阻塞完成拷贝io复用:两段阻塞过程信号驱动io:很少用,aio:唯一的异步io,其余都是同步io(需用户主动发起阻塞的拷贝操作),内核拷贝完成后通知用户netty其实基于同步io(bio和io复用),但我们说netty是异步的,......原创 2019-08-27 15:43:55 · 159 阅读 · 0 评论 -
InvocationTargetException/UndeclaredThrowableException
InvocationTargetException: 反射调用抛出,target为真实异常UndeclaredThrowableException:jdk代理抛出,只有出现非接口定义的checkedException(非runtime非Error)才会抛出,undeclaredThrowable为真实异常原创 2021-08-02 17:27:17 · 243 阅读 · 0 评论 -
类路径加载
Class:通过其ClassLoader加载,/绝对路径,即去掉/可直接传入ClassLoader加载,没有/相对路径,即相对此类的所在路径进行加载,拼接后传入ClassLoaderClassLoader:没有/, 如xu/zhi/Test.class, 在classpath加载(包括jar),先委托parent ClassLoader加载,可加载一个getResource(找到第一个即返回)或...原创 2019-09-25 19:59:13 · 1243 阅读 · 0 评论 -
Future,CompletionService
RunnableFuture:实现是FutureTask各类submit,invokeAll,invokeAny都是封装和执行FutureTask并返回用户FutureTask,在执行完成后需设置结果和唤醒等待线程invokeAll等待全部完成,invokeAny等待任一完成,当然也提供限时等待方法FutureTask:含volatile state,Callable,outcome(可能是...原创 2019-07-26 17:46:58 · 156 阅读 · 0 评论 -
BlockingQueue
ArrayBlockingQueue:一锁,两Condition,takeIndex,putIndex,count public E take() throws InterruptedException { final ReentrantLock lock = this.lock; lock.lockInterruptibly(); try { ...原创 2019-07-26 16:55:02 · 95 阅读 · 0 评论 -
List
ArrayList:(10,1.5倍扩容newCapacity = oldCapacity + (oldCapacity >> 1) ) 不够就扩容,比如10的数组放第11个的时候LinkedList:(双向链表),实现Deque(双端队列)CopyOnWriteArrayList:写入操作都加锁,拷贝生成新数组,读取操作不加锁,数组引用为volatile,需考虑volatile的...原创 2019-07-26 15:33:50 · 118 阅读 · 0 评论 -
ThreadLocal
static class Entry extends WeakReference<ThreadLocal<?>> { Object value; ... }一般来说,程序中会强引用ThreadLocal对象,当程序不再引用,等到下次gc则ThreadLocal对象被回收,WeakRefer...原创 2019-07-26 14:01:01 · 95 阅读 · 0 评论 -
Map和Set
HashMap:key和value值均可为null,数组,链表,红黑树(8)尾插法(插到链表的最后) threshold=数组长度*loadfactor ,决定是否扩容HashTable(线程安全,key和value值均不可为null)ConcurrentHashMap:线程安全,key和value值均不可为null1.7 分段锁, 先hash到Segment(继承ReentrantLoc......原创 2019-07-25 21:27:50 · 91 阅读 · 0 评论 -
线程池线程池
可preStart一个或全部core thread0,小于core则来一个任务建一个线程(firstTask),队列,额外线程,拒绝一个AtomicInteger的高3位表示线程池状态,低29位Worker数量状态:Running唯一有效,shutdown(Now)先变状态,shutdown中断空闲线程,shutdownNow中断所有线程并清空队列,若满足特定条件(如图)进入Tidying状...原创 2019-07-25 20:00:02 · 104 阅读 · 0 评论 -
jdk8
1 接口上可定义static和default方法,default方法可以被继承和重写,是一个instance method2 函数式接口:只有一个抽象方法,FunctionalInterface注解仅做声明和编译检查(多个抽象方法无法通过编译),满足条件即使无此注解依然也是函数式接口3 Lambda表达式:在函数式接口上使用匿名内部类,(参数1,参数2...) -> {}无参数(), ...原创 2019-07-30 20:38:47 · 121 阅读 · 0 评论 -
ReadWriteLock
读锁和写锁共用同一Sync(即AQS,可为公平或非公平)当前为写锁,都排队当前为读锁,公平模式下若无写请求可直接获取读锁,否则读请求排队,非公平模式可直接获取读锁state高16位为读锁数量,低16位为写锁重入数,额外有线程本地变量维护读锁重入数...原创 2019-07-30 16:24:12 · 128 阅读 · 1 评论 -
ScheduledExecutorService
ScheduledExecutorService提供scheduleAtFixedRate(固定频率,不会并发执行,一个拖了太久后面任务也会晚),scheduleWithFixedDelay(结束后等一定时间又开始),返回ScheduledFutureScheduledFuture:扩展Delayed和FutureRunnableScheduledFuture:扩展ScheduledFutur...原创 2019-07-30 15:06:35 · 118 阅读 · 0 评论 -
CompletableFuture
CompletableFuture :实现Future和CompletionStage,Supplier(可获取结果),Consumer(可消费入参),Function(可消费入参和获取结果),提供大量操作符完成各类异步操作...原创 2019-07-29 19:16:36 · 132 阅读 · 0 评论 -
ForkJoin
核心思想:分而治之,fork出子任务,join等待子任务结果ForkJoinPool,ForkJoinWorkerThread,ForkJoinTask(是Future,也是可执行实体,含exec方法, RecursiveAction无结果计算,RecursiveTask有结果计算)ForkJoinPool:继承AbstractExecutorService,含工作队列数组,奇数队列对应某线程...原创 2019-07-29 15:54:39 · 117 阅读 · 0 评论 -
String/StringBuffer/StringBuilder
String 不可变StringBuffer 继承AbstractStringBuilder, 线程安全(synchronized),维护了toString的cache(char数组),修改后cache清空,保证每一次toString方法生成新的String对象,但用的是同一char数组StringBuilder 继承AbstractStringBuilder ,线程不安全,toString...原创 2019-01-04 16:52:27 · 109 阅读 · 0 评论 -
AQS说明
AQS 继承AOS(含独占线程) volatile int state 组合使用可重写tryAcquire tryRelease tryAcquireShared tryReleaseShared isHeldExclusively内含Node: 双向链表(同步队列),thread,waitStatus,nextWaiter(构成条件等待队列,用于Condition.signal/s......原创 2018-11-23 19:19:32 · 349 阅读 · 0 评论