Java多线程编程核心技术(高洪岩)——阅读笔记

第一章 Java多线程技能

    实现多线程的方式:

  •         继承Thread类
  •         实现Runnable接口

执行start()方法的顺序不表明线程启动的顺序安全

构造函数Thread(Runnable target)不光能够传入Runnable接口的对象,还能够传入一个Thread类的对象多线程

,这样作彻底能够将一个Threa对象中的run()方法交由其余线程进行调用函数

 

在某些JVM中,i--的操做要分红以下3步:工具

  • 取得原有i值
  • 计算i-1
  • 对i进行赋值 

currentThread():返回代码段正在被那个线程调用的信息 测试

    currentThread()和 this的差别this

Thread.currentThread().getName()在两种实现线程的方式中均可以用

this.getName()只能在继承方式中使用。由于在Thread子类中用this,this表明的是线程对象。

若是你在Runnable实现类中用this.getName(),那么编译错误,由于在Runnable中,不存在getName方法

           使用Thread.currentThread().getName()和使用this.getName(),均可以获得线程的名称,可是使用this调用getName()方法只能在本类中,而不能在其余类中,更不能在Runnable接口中,因此只能使用Thread.currentThread().getName()获取线程的名称,不然会出现编译时异常。spa

 

isAlive():判断当前线程是否处于活动状态(线程已经启动且还没有终止:正在运行或准备运行状态)线程

sellp():在指定的好秒内让当前“正在执行的线程(this.currentThread())”休眠(暂停执行)对象

中止线程

    Thread.interrupt():不会终止一个正在运行的现场,还须要加入一个判断才能够完成线程的中止继承

                                仅仅实在当前线程打了一个中止的标志

    Thread.stop():不安全,弃用的方法

    中止线程的方法:

  •     退出标志:return
  •     stop()方法
  •     interrupt()方法
  •     异常法
  •     sleep+interrupt():若是在sleep状态下中止某一线程,会进入catch语句,而且清除中止状态值使之变成false;若是先interrupt()再sleep会抛出sleep interrupted异常
  •     暴力中止stop:stop()方法会抛出ThreadDeath异常(此异常不须要显示的捕捉),若是强制让线程中止则有可能使一些请理性的工具得不到完成,另一种状况就对因此的对象进行了“解锁”,致使数据得不到同步的处理,出现数据不一致的问题。

            this.interrupted()静态方法:测试当前线程(运行此方法线程,就是此段代码运行的线程,不是指调用对象的线程)是否已经中断,线程中断状态由该方法清除(置为false)

            this.isInterrupter():测试线程Thread对象是否已经中断

相关文章
相关标签/搜索