线程(4)--yield方法

来源:互联网 发布:安卓游戏开发知乎 编辑:程序博客网 时间:2024/04/28 07:08

sleep方法:线程休眠
作用:阻塞线程指定的时间,时间到了线程自动恢复运行
总结:谁执行,谁阻塞
yield方法:线程让步
作用:让出cup的使用权,和其他线程一起等待调度程序的调度
总结:谁执行,谁让步

小案例如下说明yield方法的让步:
先一个播放器,实现声音、字幕和图像的同时播放,使用yield方法实现声音的让步
声音线程类:

package com.thread.entity;public class AudioThread extends Thread{    //重写run方法,在run方法里面实现功能        @Override        public void run() {            //实现声音的播放功能            for (int i = 0; i < 100; i++) {                System.out.println("播放声音----"+i);                //此句代码将有AudioThread类型的线程对象执行,执行此句代码的线程对象会让出cpu的使用权                //总结:谁执行,谁让步                Thread.yield();            }        }}

字幕线程类:

package com.thread.entity;public class SubtitleThread extends Thread{    //重写run方法,在run方法里面实现功能        @Override        public void run() {            //实现字幕的播放功能            for (int i = 0; i < 100; i++) {                System.out.println("播放字幕--"+i);            }        }}

图像线程类:

package com.thread.entity;public class VideoThread extends Thread{    //重写run方法,在run方法里面实现功能    @Override    public void run() {        //实现图像的播放功能        for (int i = 0; i < 100; i++) {            System.out.println("播放图像------"+i);        }    }}

视频播放类:

package TestJoin;import com.thread.entity.AudioThread;import com.thread.entity.SubtitleThread;import com.thread.entity.VideoThread;public class Player{    //播放影片的功能    public void play(){        //播放声音、图像和字幕        //创建三个线程        VideoThread vt = new VideoThread();        vt.start();        AudioThread at = new AudioThread();        at.start();        SubtitleThread st = new SubtitleThread();        st.start();     }}

测试类:

package TestJoin;public class TestPlayer {    public static void main(String[] args){            Player player = new Player();            player.play();    }}