线程分类---------------------------------- java
线程分为两种:
1.用户线程;即通常的线程
2.守护线程;这是一种特殊的线程,它的特性有“陪伴”的意思,当进程中不存在非守护线程,则守护线程自动销毁,例A线程中启动了B守护线程,那么B就会一直"陪伴"着A线程,若是A线程结束了,那么B线程也会自动的销毁。就是说启动守护线程的线程,才是守护的对象。 api
线程的优先级--------------------------- 安全
优先及高的线程获得cpu的资源将越多,也就越先执行这个线程 jvm
1.设置线程的优先级使用setPriority.java中线程优化级分为1-10个等级,jdk用三个常量来定义:
MIN_PRIORITY = 1
NORM_PRIORITY = 5
MAX_PRIORITY = 10 优化
2.线程有继承性,即A线程启动了B线程,那么B线程的优先级与A同样 this
线程安全问题----------------------------------------- spa
1.从jvm结构上看:在jvm中有个栈,这个栈是专门存在java线程的信息,而每一个线程都有它们各自的领地。栈中主要存放的是方法的栈帧,每当调用一个方法时就产生出一个栈帧,当方法调用结束就将对应的栈帧弹出销毁。与其销毁的还有方法中调用的变量,因此说若是方法中都只有私有变量,那就不可能产生线程安全问题。 线程
2.那也说线程安全问题存在于"实例变量"中,若是多个线程共同访问1个对象,才有可能出现线程的安全问题。 对象
api--------------------------------------------- 继承
start
启动一个线程,但若是屡次启动会抛出IllegalThreadStateException。要注意的是start启动的顺序不表明线程启动的顺序
currentThread
返回调用该代码段的线程
isAlive
判断当前的线程是否处于活动状态(线程已经启动且还没有终止)
sleep
让当前“正在执行的线程”休眠,”正在执行线程“指this.currentThread()返回的线程
getId
取得线程的惟一标识
interrupt
在当前线程中打上了一个中止标识,并不会当即中止线程
stop
当即中止线程,是很是暴力且不安全。该方法已经被废弃,由于若是强制让线程中止则有可能使一些清理性的工做得不到完成。另一个状况就是对锁定的对象进行了”解锁“,致使数据得不到同步的处理,出现数据不一致的问题。
suspend
暂停线程,可使用resume恢复线程
yield 放弃当前的cpu资源,将它让给其余的任务去占用cpu执行时间,但放弃的时间不肯定,有可能刚放弃又立刻得到cpu的时间片。