zoukankan      html  css  js  c++  java
  • 如何保证线程的执行顺序

    示例代码

    static Thread t1 = new Thread(new Runnable() {
    public void run() {
    System.out.println("Thread1");
    }
    });
    static Thread t2 = new Thread(new Runnable() {
    public void run() {
    System.out.println("Thread2");
    }
    });
    static Thread t3 = new Thread(new Runnable() {
    public void run() {
    System.out.println("Thread3");
    }
    });
    1.使用join
    public static void main(String[] args) throws InterruptedException {
    t1.start();
    t1.join();
    t2.start();
    t2.join();
    t3.start();
    }
    join源码:
    public final synchronized void join(long millis)
        throws InterruptedException {
            long base = System.currentTimeMillis();
            long now = 0;

            if (millis < 0) {

                throw new IllegalArgumentException("timeout value is negative");
            }

            if (millis == 0) {
                while (isAlive()) {
                    wait(0);
                }
            } else {
                while (isAlive()) {
                    long delay = millis - now;
                    if (delay <= 0) {
                        break;
                    }
                    wait(delay);
                    now = System.currentTimeMillis() - base;
                }
            }
        }
    join让主线程等待,至子线程执行结束


    2.使用ExecutorService
    static ExecutorService es = Executors.newSingleThreadExecutor();
    public static void main(String[] args) throws InterruptedException {
    es.submit(t1);
    es.submit(t2);
    es.submit(t3);
    es.shutdown();
    }
    ExecutorService 提供了4种线程池,分别是:
    newCachedThreadPool;缓存线程池,可灵活回收、新建
    newFixedThreadPool;定长线程池,可控制最大并发数,超出在队列中等待
    newScheduledThreadPool;定长线程池,可定时、周期执行
    newSingleThreadExecutor;单一线程池,按顺序执行(FIFO,LIFO,优先级)

  • 相关阅读:
    使用excel2003中的solver解决最优化问题
    图的邻接表存储方式的建立
    LINUX下使用VI
    LINUX下基本命令
    应用程序各对象创建的顺序
    zookeeper常遇错误详解
    MapReduce_partition
    MapReduce_TopK
    MapReduce_MaxValue
    Hbase用java基础操作
  • 原文地址:https://www.cnblogs.com/csong7876/p/9090346.html
Copyright © 2011-2022 走看看