`

如何控制线程执行的先后顺序

    博客分类:
  • j2se
阅读更多

1.如果你有三个线程,分别为T1,T2,T3,如何让线程T2在线程T1之后执行,在线程T3之前执行。

答案是:使用线程的join方法,该方法的作用是“等待线程执行结束”,即join()方法后面的代码块都要等待现场执行结束后才能执行。事例代码如下:

package com.liuan.job;

public class Test {
	@SuppressWarnings("static-access")
	public static void main(String[] args) throws InterruptedException {
		Thread t1 = new Thread(new Runner());
		Thread t2 = new Thread(new Runner());
		Thread t3 = new Thread(new Runner());
		t1.start();
		t1.sleep(5000);
		t1.join();
	
		t2.start();
		t2.sleep(1000);
		t2.join();
		t3.start();
		t3.join();
	
	}
	
}

class Runner implements Runnable{

	@Override
	public void run() {
		System.out.println(Thread.currentThread().getName()+"");
		
	}
	
}

 执行结果是:

 

Thread-0
Thread-1
Thread-2

 

2.补充

线程的优先级无法保障线程的执行次序。只不过优先级高的线程获取 CPU 资源的概率大一点而已。

分享到:
评论

相关推荐

    Java软件开发实战 Java基础与案例开发详解 12-3 线程的调度和优先级 共5页.pdf

    为了更好地控制线程执行的先后顺序,Java提供了线程优先级的概念。线程的优先级决定了在线程调度时被选中的概率,但并非绝对决定线程执行的顺序。 **优先级范围**:Java中的线程优先级分为10个等级,分别用1到10...

    day17_线程创建、线程同步、线程状态.pdf

    由于一个进程中的多个线程是并发运行的,那么从微观角度看也是有先后顺序的,哪个线程执行完全取决于 CPU 的调度,程序员是干涉不了的。而这也就造成的多线程的随机性。 4. Java 程序的进程 Java 程序的进程里面...

    多线程使用操作大全

    - **应用场景**: 在多线程环境中,线程的优先级决定了其执行的先后顺序。通常,具有较高优先级的线程会优先被调度执行。通过调整线程的优先级,可以优化程序的执行效率。 #### 三、线程间通信与同步控制 - **方法*...

    c++多线程代码实例

    这样,两个线程将按照开启的先后顺序同步运行,当子线程运行结束后,才会继续运行主线程。 在 `Fun_1()` 和 `Fun_2()` 函数中,我们使用 `std::lock_guard` 类来自动锁定和解锁互斥锁,以便在多线程中同步访问共享...

    基于LabVIEW 测试系统的多线程编程模拟

    4. **优先级**:操作系统为每个线程分配一个优先级,用以确定其获取CPU时间片的先后顺序。高优先级的线程更有可能获得CPU资源。 #### LabVIEW中的多线程 LabVIEW是一种图形化编程语言,非常适合用于测试和测量应用...

    并发编程基础知识,java内存模型及多线程、volatile

    - **有序性(Ordering)**:涉及到程序执行的先后顺序。在单线程环境中,代码按顺序执行,但在多线程环境中,由于指令重排序等原因,可能导致执行顺序与代码编写顺序不一致。JMM提供了一些规则来保证有序性,例如...

    多线程,高并发面试题.pdf

    同步是指多线程顺序执行,即线程间有先后顺序,一个线程执行完任务后,下一个线程才开始执行;异步则指线程之间不存在严格的顺序关系,一个线程可以在另一个线程任务还未完成时就启动。同步适用于对共享资源的操作,...

    Java多线程编程的线程安全性.docx

    线程安全的定义是:当多个线程同时访问某个类时,无论运行环境如何调度线程执行,也不需要额外的同步或协调,这个类都能保持正确的行为。Java标准库中有一些类,如ArrayList、HashMap和SimpleDateFormat,并未设计为...

    自己总结的多线程

    - **有序性**:程序执行的顺序应符合代码的先后顺序,除非代码中明确指定了重排序。 - **原子性**:一个操作要么全部完成,要么全部不完成,不会被中断。 #### 2. 实现策略 - **锁机制**:如`synchronized`关键字,...

    线程池用法

    按先后顺序执行线程 public static void main(String[] args) { ExecutorService t = Executors.newSingleThreadExecutor(); for (int i = 0; i ; i++) { t.submit(new AA(i)); } System.out.println(...

    JavaScript代码执行的先后顺序问题

    JavaScript是一门单线程语言,意味着它按顺序执行代码,一次只处理一件事。理解JavaScript的执行顺序是理解代码行为的关键。JavaScript的代码执行可以分为两个阶段:代码检查装载阶段(预编译阶段)和代码执行阶段。...

    windows编程 多线程基本知识

    3. 程序中存在无先后执行顺序的代码段。 4. 在客户/服务器架构的应用中,服务端通常会使用多线程来处理来自多个客户端的请求。 在使用多线程编程时,需要注意以下几点: 1. 控制线程数量,过多的线程可能导致系统...

    java多线程死锁预防机制研究

    - **Lock公平**:锁公平意味着锁的获取顺序按照线程请求锁的先后顺序进行。这样可以避免锁饥饿的问题。 ##### 3.2 死锁预防策略 为了有效预防死锁,可以通过以下几种方式: - **按序锁定**:在线程需要获取多个锁...

    Java多线程相关知识总结

    - 在实际应用中,多线程并发输出的结果可能会出现先后顺序不确定的情况,这是由于线程在就绪和运行状态之间频繁切换导致的。 #### 二、实现线程 在Java中,实现线程主要有两种方式: 1. **继承Thread类**: - ...

    高并发多线程面试专题及答案(上).pdf

    Synchronized默认是非公平锁,意味着线程在获取锁时,不保证按照请求锁的先后顺序进行。这种方式可以减少上下文切换的开销,但可能导致某些线程“饥饿”。如果需要实现公平锁,可以使用ReentrantLock,并设置其公平...

    深入理解-Java-多线程核心知识:跳槽面试必备.docx

    线程优先级用于控制线程执行的先后顺序,优先级高的线程通常会得到更多执行机会。线程的优先级范围通常为1到10,其中10为最高优先级。 线程调度器会选择优先级最高的线程执行,但在某些情况下(如线程调用`yield()`...

    Java高级面试题,经典多线程并发问题和答案

    - **定义**:有序性意味着程序的执行顺序遵循代码的先后顺序。 - **作用**:确保程序的行为符合预期,避免因指令重排序导致的逻辑错误。 - **实现方式**:Java内存模型允许编译器和处理器对指令进行重排序,但是...

Global site tag (gtag.js) - Google Analytics