线程的停止&休眠&礼让&强制执行&优先级

线程的停止

//建议线程正常停止 --> 利用次数,不建议死循环
//建议使用标志位 --> 设置一个 flag 标志位
//不使用 stop 或 destroy 等过时方法
public class TestStop implements Runnable{

    //1、设置一个标志位
    private boolean flag = true;

    @Override
    public void run() {
        int i = 0;
        while (flag) {
            System.out.println("run..Thread" + i++);
        }
    }

    //2、实在一个公开的方法停止线程,转换标志位
    public void stop(){
        this.flag = false;
    }

    public static void main(String[] args) {

        TestStop testStop = new TestStop();

        new Thread(testStop).start();

        for (int i = 0; i < 100; i++) {
            System.out.println("main" + i);
            if (i == 90) {
                testStop.stop();
                System.out.println("线程停止了");
            }
        }
    }
}

线程的休眠

//延时200ms
Thread.sleep(200);

线程的礼让—— yield

比如有A,B两个线程,如果在A运行时进行礼让,此时A从运行态转为就绪态,让CPU重新调度;有可能礼让成功,改为B运行,也有可能失败,仍是A在运行。

thread.yield();

线程的强制执行—— join

就是某线程是VIP,可以插队运行

thread.join();

线程的优先级—— priority

优先级越高的线程,所获得的资源的就越多,有更大的可能性先执行,而不是一定会先执行,具体看CPU的调度。所以有可能出现低优先级线程先执行的情况,就是所谓的优先级倒置,引起性能问题
注意:先设置优先级,再启动;即优先级的设定在start()调度之前

getPriority().setPriority(int xxx)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本文主要讲了java中多线程的使用方法、线程同步、线程数据传递、线程状态及相应的一些线程函数用法、概述等。 首先讲...
    李欣阳阅读 7,188评论 1 15
  • Java多线程学习 [-] 一扩展javalangThread类 二实现javalangRunnable接口 三T...
    影驰阅读 8,065评论 1 18
  • 林炳文Evankaka原创作品。转载自http://blog.csdn.net/evankaka 本文主要讲了ja...
    ccq_inori阅读 3,865评论 0 4
  • 一、进程和线程 进程 进程就是一个执行中的程序实例,每个进程都有自己独立的一块内存空间,一个进程中可以有多个线程。...
    阿敏其人阅读 7,395评论 0 13
  • 线程 操作系统线程理论 线程概念的引入背景 进程 之前我们已经了解了操作系统中进程的概念,程序并不能单独运行,只有...
    go以恒阅读 5,598评论 0 6