版权声明:本文为个人学习时搜索整理而来部分内容已不知来源,未标明出处的在此向原创者致敬! /wfzczangpeng/article/details/
最近阅读了一本《Java多线程编程核心技术》,总结了一下每章的知識点:
第一章java多线程技能
1,实现多线程编程的方式主要有两种:一是继承Thread类重新run方法,二是实现Runnable接口实现run方法,对象作为构造参数传入Thread对象进行start()启动(第二种方式支持多继承情况)
4,sleep()在指定的毫秒数内让当前“正在执行的线程”休眠(暂停执行),这个”正在执行的线程”是指this.currentThread()返回的线程。
5getId(),取得线程的唯一标识
①使用退出标识,使线程正常退出也就是当run方法完成后線程终止。
②使用stop方法强行终止线程已不推荐使用,作废
③使用interrupt方法中断线程,但不是立即停止的
this.interrupted():测试当前线程是否已经是中断状態,执行后具有将状态标志置清除为false的功能
this.isInterrupted():测试线程是否已经中断状态,但不清除状态标志
在线程sleep期间,如果执行了interrup方法会报异常
7,暂停线程 suspend恢复线程 resume,方法缺点极易对公共的同步对象的独占,使其他线程无法访问
8,yieId()作用是放弃当前的CPU资源,将它让给其他任务去占用CPU执行时间但放弃时间不确定,有可能刚刚放弃又马上获得CPU时间片。
9线程的优先级,优先级较高的线程得到的CPU资源越多javaΦ,线程的优先级分为1-10个等级超出范围抛出异常。JDK中使用3个常量来预置定义优先级的值1,510。
①线程优先级具有继承特性比如A线程啟动B线程,则B线程的优先级和A是一样的
②优先级具有规则性,可以使用setPriority()方法设置线程的优先级高优先级的线程总是大部分先执行唍,但不代表高优先级的线程全部【先】执行完CPU尽量将执行资源让个优先级比较高的线程。(两个线程优先级差值比较大)
③优先级具囿随机性如果两个线程的线程优先级差别不大,高优先级的不一定先执行完
④高优先级的运行的较快。
10守护线程。典型的守护线程(GC)就是垃圾回收线程守护线程:任何一个守护线程都是整个JVM中所有非守护线程的“保姆”,只要当前JVM实例中存在任何一个非守护线程守护线程就在工作,只有当最后一个非守护线程结束时守护线程才会随着JVM一同结束工作。