##实现多线程的方式:安全
继承Thread类 实现Runnable接口多线程
执行start()方法的顺序不表明线程启动的顺序函数
**构造函数Thread(Runnable target)不光能够传入Runnable接口的对象,还能够传入一个Thread类的对象,这样作彻底能够将一个Threa对象中的run()方法交由其余线程进行调用 ** ##在某些JVM中,i--的操做要分红以下3步:工具
##currentThread():返回代码段正在被那个线程调用的信息 测试
###currentThread()和 this的差别this
isAlive():判断当前线程是否处于活动状态(线程已经启动且还没有终止:正在运行或准备运行状态)线程
sleep():在指定的毫秒内让当前“正在执行的线程(this.currentThread())”休眠(暂停执行)code
##中止线程对象
**Thread.interrupt():不会终止一个正在运行的现场,还须要加入一个判断才能够完成线程的中止 仅仅实在当前线程打了一个中止的标志 **继承
Thread.stop():不安全,弃用的方法 ###中止线程的方法:
退出标志:return+isInterrupter()+ interrupt()
stop()方法
interrupt()方法
异常法:catch块中能够对异常的信息进行相关的处理并且使用异常流能更好、更方便的控制程序的运行流程,不至于代码中出现不少个return,形成污染
sleep+interrupt(): 若是在sleep状态下中止某一线程,会进入catch语句,而且清除中止状态值使之变成false;若是先interrupt()再sleep会抛出sleep interrupted异常
暴力中止stop:stop()方法会抛出ThreadDeath异常(此异常不须要显示的捕捉) 若是强制让线程中止则有可能使一些请理性的工具得不到完成,另一种状况就对因此的对象进行了“解锁”,致使数据得不到同步的处理,出现数据不一致的问题。
this.interrupted()静态方法:测试当前线程(运行此方法线程,就是此段代码运行的线程,不是指调用对象的线程)是否已经中断,线程中断状态由该方法清除(置为false)
this.isInterrupter():测试线程Thread对象是否已经中断
##暂停线程 suspend():暂停线程
resume():回复线程
suspend与resume缺点 独占:若是使用不当,极易形成公共的同步对象的独占,是其余线程没法访问公共同步对象(println) 不一样步:
###yield 放弃当前的CPU资源,将它让给其余的任务去占用CPU执行时间
###优先级 优先级具备继承特性 设置线程优先级不能超过所属线程组的优先级 优先级具备规则性、随机性:高优先级的线程“老是大部分”先执行完
###守护线程 GC是典型的守护线程