工作中 Spark Sql 占了不小的比重,为了提高开发效率,就想搞个在线编辑器,期待有语法高亮、语法检测、自动提示等功能。技术栈主要包含 CodeMirror 以及 Spark Catalyst。
“与基于锁的方案相比,非阻塞算法在设计和实现上都要复杂的多,但他们在可伸缩性和活跃性上却拥有巨大的优势。 由于非阻塞算法可以使用多个线程在竞争相同的数据时不会发生阻塞,因此它能在粒度更细的层次上进行协调。”
类库中包含了许多存在状态依赖的类,例如FutureTask、Semaphore和BlockingQueue,他们的一些操作都有前提条件,例如非空,或者任务已完成等。
创建状态依赖类的最简单的方法就是在JDK提供了的状态依赖类基础上构造。例如第八章的ValueLactch,如果这些不满足,可以使用Java语言或者类库提供的底层机制来构造,包括:
在Java5.0之前,在协调对共享对象的访问时可以使用的机制只有synchronized和volatile。Java5.0增加了一种新的机制:ReentrantLock。与之前提到过的机制相反,ReentrantLock并不是一种替代内置加锁的方法,而是当内置加锁机制不适应时,作为一种可选的高级功能。