多线程基础入门

163 阅读1分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第18天,点击查看活动详情

多线程基础入门

开启线程的方法有哪些?

这个问题已经是老生常谈的问题了,相信大家都可以毫不犹豫地回答出来:

  1. 一个类继承Thread类,并重写run()方法
  2. 一个类实现Runnable接口,并实现run()方法

具体代码实例:

继承Thread类:

     class Test extends Thread {
        @Override
        public void run() {
            System.out.println("Hello Thread!");
        }
    }

实现Runnable接口:

   class Test implements Runnable {
        @Override
        public void run() {
            System.out.println("Hello MyRun!");
        }
    }

到了这里,如果有一些比较想得比较偏的话,其实是由三种创造线程的方法的,两个就是上面展示的这两种方法,至于第三种方法就是利用线程池来创建线程,这样也是可以的。

不过有一点需要注意的是,虽然是使用线程池来创建线程,但是它内部的本质也是使用以上的两种方法来创建的。

线程的休眠

有些时候,咱们需要让线程先隔一段时间再继续执行,那么这个时候咱们就是可以先让线程休眠一段时间。

具体代码的实现如下所示:

new Thread(() -> {
            for (int i = 0; i < 100; i++) {
                System.out.println("a" + i);
                try {
                    Thread.sleep(500);
                    
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }).start();

线程的让出

Thread.yied()这个方法不太常用,但是作为理论技术学习,咱们还是有必要过一遍。

那么这个方法的具体功能是什么呢?它能实现什么?

其实它就是让当前正在执行的线程先让出一下cpu,自己回到操作系统的就绪队列中。

至于它让出了cpu,下面是谁在cpu运行这就是说不准的了,有可能是其他线程,但是也有可能是它自己。

为什么呢?

因为当该线程让出cpu的时候,操作系统就会发生调度,调度是根据一定的算法从就绪队列中挑选一个线程到cpu中运行;而刚刚的那个线程在让出cpu之后,就回到了就绪队列;所以操作系统有可能再次调度它,也有可能调度其他线程;这主要是由操作系统决定的。