我是靠谱客的博主 有魅力飞机,最近开发中收集的这篇文章主要介绍Java多线程学习笔记(三)休眠(sleep),让步(yield),插队(join)线程休眠:线程让步:线程插队:,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
线程目录
- 线程休眠:
- 线程让步:
- 线程插队:
线程休眠:
使用Thread.sleep(long millis)可以使线程休眠,也就是将正在执行的线程暂停,将CPU让给其他线程去执行。
实例:
public class Example06 {
public static void main(String[] args) {
SleepThread sleepThread = new SleepThread();
new Thread(sleepThread,"线程A").start();
for (int i = 0; i <= 5; i++) {
if (i == 5){//i=5时,休眠2秒
try {
Thread.sleep(2000);
}catch (Exception e){
e.printStackTrace();
}
}
System.out.println(Thread.currentThread().getName() + "输出了" + i);
}
}
}
//SleepThread实现Runnable接口
class SleepThread implements Runnable {
public void run() {
for (int i = 0; i <= 5; i++) {
try {
if (i == 5) {//i=5时,休眠2秒
Thread.sleep(2000);
}
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + "输出了" + i);
}
}
}
运行结果:
线程让步:
线程让步可以通过yield()方法来实现,该方法和sleep()方法相似,都可以让正在运行的线程暂停。区别在于yield()方法不会阻塞该线程,只会将线程转换为就绪状态,让系统调度器从新调度一次。当线程调用yield()方法之后,只有与当前线程优先级相同或者更高的线程才会获得执行的机会。
实例:
public class Example07 {
public static void main(String[] args) {
yieldThread yieldThread1 = new yieldThread();//创建实例
new Thread(yieldThread1,"线程A").start();//启动线程
yieldThread yieldThread2 = new yieldThread();//创建实例
new Thread(yieldThread2,"线程B").start();//启动线程
}
}
class yieldThread implements Runnable{
public void run() {
for (int i = 0; i <= 5; i++ ){
System.out.println(Thread.currentThread().getName() + "---" + i);
if (i == 4){
System.out.print("线程让步了:");
Thread.yield();//线程执行到这会让步
}
}
}
}
运行结果:
线程插队:
在一个线程中调用其它线程的join()方法时,调用的线程将会阻塞,直到被加入的线程执行完之后它才会运行。
实例:
public class Example08 {
public static void main(String[] args) throws Exception {
Thread a = new Thread(new JoinThread(), "线程A");
a.start();
for (int i = 0; i <= 5; i++) {
System.out.println(Thread.currentThread().getName() + "输出" + i);
if (i == 2){
a.join();//调用join()方法
}
Thread.sleep(1000);//休眠1秒中
}
}
}
class JoinThread implements Runnable {
public void run() {
for (int i = 0; i <= 5; i++) {
System.out.println(Thread.currentThread().getName() + "输出" + i);
try {
Thread.sleep(1000);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
运行结果:
加油吧!!!
最后
以上就是有魅力飞机为你收集整理的Java多线程学习笔记(三)休眠(sleep),让步(yield),插队(join)线程休眠:线程让步:线程插队:的全部内容,希望文章能够帮你解决Java多线程学习笔记(三)休眠(sleep),让步(yield),插队(join)线程休眠:线程让步:线程插队:所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复