核心静态方法
registerNatives
- native方法
- 内部调用
- 类加载第一件事就是执行registerNatives
- 内部逻辑待补充
currentThread
- native方法
- 支持外部调用
- 获取当前执行的线程
- 内部逻辑待补充
yield
- native方法
- 放弃当前线程的执行权,重新和其他等待线程竞争
- 内部逻辑待补充
sleep
- native方法
- 使当前执行的线程睡眠(暂时停止执行)指定的毫秒数,依赖于系统计时器和调度器的精度和准确度,
- 吐槽下这个方法public static void sleep(long millis, int nanos),感觉这个方法比较搞笑,有啥用?要精确到纳秒?并且….里面的实现有点扯:看下面的代码,最后还是毫秒..就是个是否+1的操作.好吧,这个类我没理解作者的用途.有知道的评论里聊聊
if (nanos >= 500000 || (nanos != 0 && millis == 0)) {
millis++;
}
sleep(millis);
- -
其他静态方法
nextThreadNum
- 加锁
- +1返回
- 为未指定线程名称的线程初始化的时候设置默认线程名称使用
- 所以尽量直接指定线程名称,否则这里有个锁
nextThreadID
- 加锁
- +1返回
- 用于新增线程时分配一个id
isCCLOverridden
- 在init方法中调用了
- 验证当前类(可能是子类)可以在不违反安全约束的情况下被创建:子类必须不能覆写安全敏感的非final方法,或者其他enableContextClassLoaderOverride 的权限已经校验过,
- 如果是Thread类.直接通过
- 其他的类的话都需要进行校验