Java-关于Thread

1)进程是受操做系统管理的基本运行单元,线程是进程中独立运行的子任务安全

2)Thread.start()方法通知线程规划器,告知其该线程已经准备完成,能够调用其run方法,这时就是异步的方法;若是直接调用run,就没有交给线程规划器,就是同步方法。另外,执行start的顺序并非线程启动的顺序。异步

3)在jvm中i--有三步操做:一、取出i的值;二、作减法;三、赋予i值jvm

4)isAlived方法是检测线程是否属于活动状态this

5)sleep的做用是指定毫秒数内让当前正在执行的线程休眠,正在执行的线程指的是this.currentThread返回的线程操作系统

6)getID方法是获取线程的惟一标识线程

7)Thread.stop中止线程,可是并非线程安全的(调用Thread.stop时会抛一个ThreadDeath异常,一般不须要处理该异常,强制stop会释放锁(线程处理数据没处理完,处理到一半就释放锁了,线程就退出了,这是数据是不正确的),会对正在处理的同步数据形成破坏,出现不一致结果。)继承

8)利用Thread.interrupt停止线程是安全的,但interrupt并非当即中止,而是在当前线程中打一个中止标记进程

9)this.interrupted判断当前线程是不是中断状态,执行后具备将状态标志清除的功能,也就是说,连续两次执行this.interrupted,第二次获得的结果一定是false;this.isInterrupted判断当前线程是不是中断状态,执行后不具备将状态标志清除的功能事件

10)中止线程的方法:资源

  A)线程里是一个for循环,for循环一直判断线程是否interrupted,若是被外部停止了,break结束for循环,而后继续走for后面的语句,而后run方法就结束了;

  B)线程里是一个for循环,for循环一直判断线程是否interrupted,若是被外部停止了,抛出一个异常,catch住,而后就结束run方法了;

  C)线程在sleep的时候,外部执行interrupt方法停止线程,会抛InterruptExpection,能够catch这个异常,而后退出;

  D)暴力中止,Thread.stop;

  E)使用return中止线程

推荐用抛异常的形式结束线程,这样能够保证线程退出这个事件一直传播出去

11)suspend暂停线程,resume恢复线程。suspend和resume若是使用不当,极容易形成线程永远暂停,暂停后,线程的同步锁是没法被释放的

12)yield方法是放弃当前的CPU资源,将它让给其余任务去占用CPU执行时间,但放弃时间不肯定,有可能刚刚放弃,立刻就得到了CPU时间片

13)在操做系统中,能够给线程肯定优先级,优先级较高的线程获得的CPU资源较多,为线程设置优先级,有利于线程规划器肯定下一次选择哪一个线程来优先执行。setPriorty方法能够设置线程的优先级,在1-10中间选择。线程优先级具备继承特性,例如A线程启动B线程,B线程与A线程的优先级相同。优先级具备规则性,高优先级的线程老是大部分先执行完,但不表明高优先级的线程所有先执行完;优先级具备随机性,优先级较高的线程不见得每次都先执行完

14)守护线程是一种特殊的线程,当进程中不存在非守护线程了,守护线程就退出了。典型的线程是垃圾回收线程,当进程中没有非守护线程(用户线程)时,就没有垃圾回收的意义了,垃圾回收线程就自行销毁了。

 

 

 

相关文章
相关标签/搜索