java线程--优先级、休眠、让步、插队实例
  HvTJUzsxOBtS 2023年11月25日 75 0


1.线程的优先级

java线程的优先级通常是数字越大,优先级越高数值取1~10

package com.example;

public class MyThreadPriority {
    public static void main (String [] args){
        Thread maxpriority = new Thread(new Maxpriority(),"优先级较高的线程");
        Thread minpriority = new Thread(new Minpriority(),"优先级较低的线程");
        minpriority.setPriority(Thread.MIN_PRIORITY);  //设置线程的优先级为1
        maxpriority.setPriority(10); //设置线程优先级为10
        //开启两个线程
        maxpriority.start();
        minpriority.start();
    }
}

class Maxpriority implements  Runnable{
    public void run(){
        for (int i=0;i<10;i++){
            System.out.println(Thread.currentThread().getName()+"正在输出"+i);
        }
    }

}

class Minpriority implements  Runnable{
    public void run(){
        for (int i=0;i<10;i++){
            System.out.println(Thread.currentThread().getName()+"正在输出:"+i);
        }
    }

}

执行结果:
优先级较高的线程正在输出0
````
优先级较高的线程正在输出9
优先级较低的线程正在输出:0
```
优先级较低的线程正在输出:9

2.线程的休眠
package com.example;

public class MyThreadSleep {
    public static void main (String [] args) throws InterruptedException {
        new Thread(new SleepThread()).start();
    for(int i=0;i<10;i++){
        if(i==5){
            Thread.sleep(5000);
            System.out.println("主线程正在输出:"+i);
            Thread.sleep(3000);
        }

    }
    }
}

class SleepThread implements Runnable{

    public void run(){
        for(int i=0;i<10;i++){

            if(i==3){

                try {
                    Thread.sleep(3000);
                }catch (InterruptedException e){
                    e.printStackTrace();
                }
            }
            System.out.println("线程1正在输出:"+i);
            try {
                Thread.sleep(2000);
            }catch (Exception e){
                e.printStackTrace();
            }
        }
    }
}
3、线程让步
package com.example;

public class MyYieldThread {
    public static void main (String [] args){
        Thread t1 = new YieldThread("线程1");
        Thread t2 = new YieldThread("线程2");
        //开启两个线程
        t1.start();
        t2.start();

    }
}


class YieldThread extends  Thread{

    public YieldThread (String name){
        super (name); //调用父类的构造方法
    }

    public void run(){
        for(int i = 0;i<5;i++){

            System.out.println(Thread.currentThread().getName()+"---"+i);
            if(i==3){
            System.out.println("线程让步:");
                Thread.yield(); //线程运行到此作出让步

            }

        }

    }
}

运行结果:
线程1—0
线程1—1
线程1—2
线程1—3
线程让步:
线程2—0
线程2—1
线程2—2
线程2—3
线程让步:
线程1—4
线程2—4

4、线程的插队
package com.example;

public class MyEmergercyThread {
    public static void main (String [] args) throws InterruptedException {
    Thread t =new Thread(new EmergencyThread(),"线程1");//创建线程
        t.start(); //开启线程
        for(int i=1;i<6;i++){
            System.out.println(Thread.currentThread().getName()+"输入:"+i);
            if(i==2){
                t.join(); //调用join()方法
            }
            Thread.sleep(500); //线程休眠500毫秒
        }
    }
}

class  EmergencyThread  implements  Runnable{
    public void run(){

        for (int i=1;i<6;i++){
            System.out.println(Thread.currentThread().getName()+"输入:"+i);
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }

        }
    }

}

运行结果:
main输入:1
线程1输入:1
main输入:2
线程1输入:2
线程1输入:3
线程1输入:4
线程1输入:5
main输入:3
main输入:4
main输入:5

参考文档:
Java基础入门 传智博客高教产品研发部 

本人郑重声明,本博客所著文章、图片版权归权利人持有,本博只做学习交流分享所用,不做任何商业用途。访问者可將本博提供的內容或服务用于个人学习、研究或欣赏,不得用于商业使用。同時,访问者应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人的合法权利;如果用于商业用途,须征得相关权利人的书面授权。若以上文章、图片的原作者不愿意在此展示內容,请及时通知在下,將及时予以刪除。


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月25日 0

暂无评论

推荐阅读
  2Vtxr3XfwhHq   2024年05月17日   54   0   0 Java
  Tnh5bgG19sRf   2024年05月20日   109   0   0 Java
  8s1LUHPryisj   2024年05月17日   46   0   0 Java
  aRSRdgycpgWt   2024年05月17日   47   0   0 Java
HvTJUzsxOBtS