首页
首页
沸点
课程
直播
活动
竞赛
商城
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
monkeysayhi
掘友等级
我是猴子007,一只非常特殊的动物,可以从事程序的开发、维护,经常因寻
获得徽章 0
动态
文章
专栏
沸点
收藏集
关注
作品
赞
68
文章 68
沸点 0
赞
68
返回
|
搜索文章
赞
文章( 68 )
沸点( 0 )
String常量池和String#intern()
String是Java基础的重要考点。可问的点多,而且很多点可以横向切到其他考点,或纵向深入JVM。 编译期:通过双引号声明的常量(包括显示声明、静态编译优化后的常量,如”1”+”2”优化为常量”12”),在前端编译期将被静态的写入class文件中的“常量池”。该“常量池”会在…
【刷题】Lowest Common Ancestor
最低公共祖先 Lowest Common Ancestor 三连击. Given the root and two nodes in a Binary Tree. Find the lowest common ancestor(LCA) of the two nodes. Th…
源码|并发一枝花之ReentrantLock与AQS(1):lock、unlock
显示锁ReentrantLock的内部同步依赖于AQS(AbstractQueuedSynchronizer),因此,分析ReentrantLock必然涉及AQS。 本文假设读者已熟练掌握AQS的基本原理(参考AQS的基本原理),通过分析ReentrantLock#lock()…
源码|并发一枝花之ReentrantLock与AQS(2):lockInterruptibly
上次分析了ReentrantLock#lock()与ReentrantLock#unlock()的实现原理,并初步讨论了AQS的等待队列模型,参考源码|并发一枝花之ReentrantLock与AQS(1):lock、unlock。 本文继续分析ReentrantLock#loc…
轮子|Python2异常链
介绍一个自己造的轮子,Python2异常链。 不考虑代码风格,是标准的Python2异常处理方式:分别捕获异常,再统一成一个异常,只有msg不同,重新抛出。这种写法又丑又冗余,顶多可以改成这样: 即便如此,也无法解决一个最严重的问题:明明是11行抛出的异常,但打印出来的异常栈却…
AQS的基本原理
AQS(AbstractQueuedSynchronizer)是一个用于构建锁和同步器的框架,许多同步器都可以通过AQS很容易并且高效的构造出来。不仅Reentrant和Semaphore是基于AQS构建的,还包括CountDownLatch、ReentrantReadWrit…
条件队列大法好:使用wait、notify和notifyAll的正确姿势
前面介绍wait和notify的基本语义,参考条件队列大法好:wait和notify的基本语义。这篇讲讲使用wait、notify、notifyAll的正确姿势。 状态依赖的类:在状态依赖的类中,存在着某些操作,它们拥有基于状态的前提条件。也就是说,只有该状态满足某种前提条件时…
源码|批量执行invokeAll()&&多选一invokeAny()
ExecutorService中定义了两个批量执行任务的方法,invokeAll()和invokeAny(),在批量执行或多选一的业务场景中非常方便。invokeAll()在所有任务都完成(包括成功/被中断/超时)后才会返回,invokeAny()在任意一个任务成功(或Exec…
浅谈linux线程模型和线程切换
本文从linux中的进程、线程实现原理开始,扩展到linux线程模型,最后简单解释线程切换的成本。 linux用户态的进程、线程基本满足上述概念,但内核态不区分进程和线程。可以认为,内核中统一执行的是进程,但有些是“普通进程”(对应进程process),有些是“轻量级进程”(对…
源码|newTaskFor()和适配器模式
AbstractExecutorService提供了一个创建任务的工厂方法——newTaskFor()。工厂方法大家很熟悉了,但newTaskFor()中用到的适配器模式却少有人提到。 直接调用了FutureTask的有参构造函数。 该接口继承了Runnable、Future接…
下一页
个人成就
优秀创作者
文章被点赞
2,488
文章被阅读
173,050
掘力值
7,399
关注了
1
关注者
3,951
收藏集
0
关注标签
5
加入于
2017-09-30