首页 > 编程 > Java > 正文

JAVA源码笔记(jdk 1.7.0_75)--Thread-精简版本

2019-11-08 03:09:42
字体:
来源:转载
供稿:网友

核心静态方法

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);

非静态常用方法

init

* 构造方法调用的 * 初始化一个线程 * name必须指定 * 父线程是当前线程 * 安全管理器是System的 * ThreadGroup为空的话,取安全管理器的,再没有取父线程的 * 检查ThreadGroup,不能为null,当不等于根的时候通过检查,否则检查是否有修改根ThreadGroup的权限 * 检查是否是子类复写了安全敏感且非final的方法,和检查能否设置类加载器的方法 * ThreadGroup未开始线程数(nUnstartedThreads)加一 * 继承父线程是否守护线程,优先级,父线程上下文类加载器 * 设置父线程的ThreadLocal的数据

clone

覆写抛出不支持克隆的异常,因为线程无法正在意义上的克隆,创建一个新的线程吧.

start

调用了start0设置start状态

exit

注意不是退出线程而是线程退出前可以调用这个方法来清理资源

interrupt

中断这个线程,只有自己能中断,否则会抛安全异常如果被wait,join,sleep阻塞了则会清除中断状态,然后线程收到InterruptedException异常如果被java.nio.channels.InterruptibleChannel的可中断 channel的io操作阻塞,这个channel被关闭,且线程中断中态会被设置,然后线程收到java.nio.channels.ClosedByInterruptException如果在java.nio.channels.Selector里阻塞,线程中断中态会被设置且将立刻返回selection的操作,可能是个非0的值,就好像ava.nio.channels.Selector的wakeup方法被执行的时候如果没有前置条件这个线程中断状态将被设置

isInterrupted

测试该线程是否已经终止,无参的不清除中止状态,有参数的可以进行指定是否清除

isAlive

native测试这个线程是否还活着,一个线程如果已启动但还没有死亡的情况下就是活着的

setPRiority

设置优先级首先检查访问权限然后检查不能大于最大值(10)也不能小于最小值(1)最后优先级不能大于TheadGroup的最大优先级,否则会设置为TheadGroup的最大值

getThreadGroup

线程死亡(stop)的时候会返回null

join

wait0或指定n毫秒while(isLive())

构造方法常用参数

构造方法有很多,但最终都是调用的init方法,下面解释构造方法内的参数

ThreadGroup group

传参可以为null,为null时自动从SecurityManager取或继承父线程的

Runable target

可以为null 目标执行的对象,会调用run方法进行执行

String gname

线程名称如果构造方法内没有定义,则是自动生成一个,但会调用一个有锁的方法,建议指定线程名称

总结:

new Thread的时候尽量指定线程名称,否则会有个锁子类尽量不要覆写父类方法,尤其是类加载器等相关方法不覆写父类方法的话,那么直接继承Runable接口就好所以推荐构造方法new Thread(Runable target ,String name)克隆方法不可用判断线程是否被终止,需要islive和isInterrupted一起来判断,否则可能会判断错误里面有很多调试的方法,正常情况下不建议使用已经弃用的方法不要使用 未完待续
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表