摘要:
在ThreadPoolExecutor的属性定义中频繁地用位移运算来表示线程池状态,位移运算是改变当前值的一种高效手段,包括左移和右移。下面从属性定义开始阅读ThreadPoolExecutor的源码。 第一处说明,线程池状态用高3位表示,其中包括了符号位。五种状态的十进制值按小道大依次排序为: R 阅读全文
摘要:
动态作用域无论是with表达式还是try-catch表达式的catch子句,以及包含()的函数,都被认为是动态作用域。一个动态作用域只因为代码运行而存在。因此无法通过静态分析(查看代码机构)来确定(是否存在作用域)。例如:function execute(code) {(code);function subroutine(){return window;}var w = subroutine();//what value is w?};execute()函数看上去像一个动态作用域,因为它使用了()。w变量的值与code有关。大多数情况下,w将等价于全局变量window对象,但是请考虑如下情况: 阅读全文