java多线程控制线程执行顺序

103 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第15天,点击查看活动详情

今天来学习一下Java中一个比较重要的模块,多线程。多线程在java开发尤其是并发编程这里的重要性不言而喻,需要我们好好研究。

进程

进程是资源(CPU、内存等)分配的基本单位,它是程序执行时的一个实例。
程序运行时系统就会创建一个进程,并为它分配资源,然后把该进程放入进程就绪队列,进程调度器选中它的时候就会为它分配CPU时间,程序开始真正运行。

线程

线程是程序执行时的最小单位,它是进程的一个执行流,是CPU调度和分派的基本单位。 一个进程可以由很多个线程组成,线程间共享进程的所有资源,每个线程有自己的堆栈和局部变量。 线程由CPU独立调度执行,在多CPU环境下就允许多个线程同时运行。同样多线程也可以实现并发操作,每个请求分配一个线程来处理。

每一个应用程序都是一个进程,每个进程中包含多个线程。

实现线程的三种方式

继承Thread类

实现Runabled

ExecutorService

Callable Future 带返回值的多线程操作

多线程的生命周期

创建 就绪 运行 阻塞 终止

控制线程执行顺序

这里我们来了解一下控制线程执行顺序,定义三个线程进行执行,这个时候正常执行多个线程的话,每个线程的执行顺序都是随机的。

static Thread thread1 = new Thread(new Runnable() {
    @Override
    public void run() {
        System.out.println("线程1");
    }
});

static Thread thread2 = new Thread(new Runnable() {
    @Override
    public void run() {
        System.out.println("线程2");
    }
});

static Thread thread3 = new Thread(new Runnable() {
    @Override
    public void run() {
        System.out.println("线程3");
    }
});
join()

join()java中经常会用到的一个控制线程的方法,它主要是将当前线程置为WAITTING状态,然后等待调用的线程执行完毕或被interrupted。

这里我们来使用一个 join() 方法来控制线程执行顺序:

thread1.start();
thread1.join();
thread2.start();
thread2.join();
thread3.start();
thread3.join();

20190619181253748.png