【java】多线程操作方法--sleep、yield、join、线程停止

1.线程休眠(sleep)
2.线程让步(yield)
3.等待其他线程终止(join)
4.线程停止

线程休眠(sleep)

public static native void sleep(long mills) throws InterruptedException 

让当前线程暂缓执行(running->blocked),等到了预计时间后再恢复执行(blocked->runnable)
立即交出CPU,但不会释放锁

线程让步(yield)

public static native void yield()

1.暂停执行当前的线程对象,并执行其他线程。
2.让当前线程交出CPU,同时不释放锁。但是无法确定具体交出CPU事件,并且只能让相同优先级的线程有获取CPU的机会
3.running->runnable
4.runnable->running

join方法–等待其他线程终止

1.只是对object提供的wait()方法做了一层封装
2.等待该线程终止,如果在主线程中调用该方法,会让主线程休眠。让调用该方法的线程执行完毕后再恢复主线程

线程停止

设置标记位
调用Thread提供的stop()方法

不安全,已经被Deprecates

调用Thread类的interrupt()

1.只是将线程状态置为中断状态,不会中断一个正在运行的线程。
2.只是给线程传递一个中断的信号,程序可以根据此信号判断是否需要终止
3.当线程中使用了wait,sleep以及join导致此线程阻塞,则interru方法会在线程中抛出interruptException,并且将线程由中断状态由true置为false

猜你喜欢

转载自blog.csdn.net/hgelin/article/details/89421280