Java多线程常用方法

【摘要】 start()与run()
      start() 启动线程并执行相应的run()方法       run() 子线程要执行的代码放入run()方法
getName()和setName()
 getName() 获取此线程的名字  setName() 设置此线程的名字
isAlive()
是判断当前线程是否处于活动状态。活动状态就是已经启动尚未终止。
curr…

start()与run()

start() 启动线程并执行相应的run()方法
run() 子线程要执行的代码放入run()方法

getName()和setName()

getName() 获取此线程的名字
setName() 设置此线程的名字

isAlive()

是判断当前线程是否处于活动状态。活动状态就是已经启动尚未终止。

currentThread()

返回代码段正在被哪个线程调用

sleep()

主要的作用是让当前线程停止执行,把cpu让给其他线程执行,但不会释放对象锁和监控的状态,到了指定时间后线程又会自动恢复运行状态

注意:线程睡眠到期自动苏醒,并返回到可运行状态,不是运行状态。sleep()中指定的时间是线程不会运行的最短时间。因此,sleep()方法不能保证该线程睡眠到期后就开始执行

yield()

中文意思:放弃,屈服
一个线程调用yield()意味着告诉虚拟机自己非常乐于助人,可以把自己的位置让给其他线程(这只是暗示,并不表绝对)。但得注意,让出cpu并不代表当前线程不执行了。当前线程让出cpu后,还会进行cpu资源的争夺,但是能不能再次分配到,就不一定了

 

getPriority()和setPriority(int newPriority)

这两个方法是用于获取当前和设置线程的优先级。优先级高的线程得到的cpu多。也就是说,两个等待的线程,优先级高的线程容易被cpu执行。

默认情况下,线程的优先级是5。线程的优先级分为1~10等级。

getId()

取得线程唯一标识

yield()

yield() 暂停当前方法,释放自己拥有的CPU,线程进入就绪状态。

join()

所属线程对象x正常执行run,当前线程z无限等待直到执行完。常用于需要子线程的执行结果

interrupted()

interrupted()是静态方法:内部实现是调用的当前线程的isInterrupted(),并且会重置当前线程的中断状态

isInterrupted()是实例方法,是调用该方法的对象所表示的那个线程的isInterrupted(),不会重置当前线程的中断状态

它们的作用是判断线程是否是停止状态

isDaeMon、setDaemon(boolean on)

java线程有两种,一种是用户线程,一种是守护线程。守护线程是一个特殊的线程,任何一个守护线程都是jvm中所有非守护线程的保姆。当进程中不存在非守护线程时,守护线程会自动销毁。典型的守护线程就是垃圾回收线程。

第一个是判断线程是不是守护线程,第二个是设置线程为守护线程,必须在线程start之前setDaemon(true)。

stop()

强制停止,已废弃

可能释放锁导致数据不对。

可能导致清理工作做不好。

suspend和resume

暂停和恢复

会造成独占(永远的暂停)(方法)

造成不同步

文章来源: fantianzuo.blog.csdn.net,作者:兔老大RabbitMQ,版权归原作者所有,如需转载,请联系作者。

原文链接:fantianzuo.blog.csdn.net/article/details/102669903

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享