`
雨过天晴0521
  • 浏览: 159592 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

如何跟踪多线程的执行顺序

 
阅读更多
如果想跟踪多个线程修改某个值的顺序,可以

1.为每个线程命名,也可以使用默认名
2.将线程名+变量值一起输出
3.让主线程等待其他线程结束

/**
 * Created by IntelliJ IDEA.
 * User: Michael
 * Date: 9/21/11
 * Time: 6:28 PM
 * To change this template use File | Settings | File Templates.
 */
public class Machine extends Thread{

    private static StringBuffer log = new StringBuffer();
    private static int count = 0;
    private int a = 0;

    public void run(){
        for(int i=0; i<20; i++){
            a++;
            log.append(currentThread().getName()+":a="+a+" ");
            if(++count %10==0)
                log.append("\n");
        }
    }

    public static void main(String args[])throws Exception{
        Machine machine1 = new Machine();
        Machine machine2 = new Machine();
        machine1.setName("t1");
        machine2.setName("t2");
        machine1.start();
        machine2.start();
        while(machine1.isAlive()||machine2.isAlive())
            Thread.sleep(500);
        System.out.println(log);
    }
}


输出结果:


t1:a=1 t1:a=2 t1:a=3 t1:a=4 t1:a=5 t2:a=1 t1:a=6 t2:a=2 t2:a=3 t2:a=4 
t2:a=5 t2:a=6 t2:a=7 t1:a=7 t2:a=8 t1:a=8 t1:a=9 t2:a=9 t1:a=10 t2:a=10 
t1:a=11 t1:a=12 t2:a=11 t1:a=13 t1:a=14 t2:a=12 t1:a=15 t1:a=16 t2:a=13 t1:a=17 
t2:a=14 t1:a=18 t2:a=15 t1:a=19 t1:a=20 t2:a=16 t2:a=17 t2:a=18 t2:a=19 t2:a=20 



如果想改变执行顺序, 可以为线程设定优先级, java提供了10个优先级,但不能与所有操作系统都能映射. Windows 2000有7个优先级, 并且不固定, Sun的Solaris有2的32次方个优先级.如果希望很好的移植, 就要是用MAX_PRIORITY, NORM_PRIORITY, MIN_PRIORITY这三个优先级.
分享到:
评论

相关推荐

    C# 不使用Task实现的多线程顺序执行

    多线程有很好的并发性即无序性,在某些特殊情况下需要用到多线程然而又要使其具备顺序性,这种时候就有了一个特殊的场景那就是多线程顺序执行,在现在VS2015中Task自带了顺序执行的方法,但在此之前的旧项目中如果...

    多线程并行执行,汇总结果

    综上所述,多线程并行执行是提升程序性能的重要手段,而`CountDownLatch`和线程安全的数据结构则为在多线程环境中控制执行顺序和保证数据一致性提供了有力支持。理解并熟练运用这些工具和技术,对于开发高效、可靠的...

    易语言多线程执行任务例程

    在这个“易语言多线程执行任务例程”中,我们将深入探讨如何在易语言中利用多线程技术来提升程序的运行效率和并发能力。 多线程是现代计算机编程中的一个重要概念,它允许一个程序同时执行多个任务,从而充分利用...

    多线程计数实现多线程执行后再执行主线程

    通过以上分析,我们可以看到使用`CountDownLatch`来协调多线程执行顺序是一种非常有效的方式。这种方式不仅能够简化程序设计,还能够提高系统的稳定性和健壮性。在实际项目开发中,合理地利用这种技术可以有效地解决...

    易语言多线程多次启动一个子程序

    在编程领域,多线程是实现并发执行任务的重要机制,特别是在需要高效利用系统资源和提高程序响应速度的情况下。易语言,作为一款中国本土的、面向初学者和专业开发者都友好的编程工具,同样支持多线程编程。本节将...

    多线程执行任务具体实现

    本篇文章将深入探讨多线程执行任务的具体实现方式。 一、线程的概念与优势 线程是操作系统分配CPU时间的基本单元,一个进程可以包含一个或多个线程。相比于单线程,多线程能充分利用多核处理器资源,减少程序等待I/...

    前端请求,多线程执行

    在IT行业中,前端请求与多线程执行是两个重要的概念,尤其在构建高效、响应迅速的Web应用时显得至关重要。本文将围绕这两个主题展开,详细解释它们的含义、作用以及如何在实际开发中运用。 首先,让我们理解"前端...

    多线程_按键精灵经典多线程操作_

    在IT行业中,多线程是一种常见的编程技术,它允许程序同时执行多个独立的任务,从而提高计算机系统的效率和响应性。特别是在自动化工具如“按键精灵”中,多线程的应用能够显著提升其性能和实用性。 标题“多线程_...

    易语言多线程鼠标点击源码

    在易语言中,多线程技术是实现并发处理和提高程序效率的重要手段。本文将详细探讨易语言中如何实现多线程以及利用多线程进行鼠标点击操作的源码解析。 首先,理解多线程的基本概念至关重要。在单线程环境中,程序...

    易语言源码多线程类源码.rar

    2. 易语言中的线程类:易语言提供了内置的线程类,开发者可以通过创建线程对象,定义线程函数(即线程执行的代码块),然后启动线程来实现多线程。线程类通常包含创建、启动、同步和销毁线程的方法。 3. 线程同步:...

    C# 多线程异步执行

    在编程领域,多线程和异步执行是提高应用程序性能和响应能力的关键技术。尤其是在C#这样的高级语言中,这两个特性被广泛应用于处理耗时任务,如网络I/O操作,如下载图片。本文将深入探讨如何使用C#的多线程和异步...

    鱼刺多线程注册源码例子(鱼刺多线程稳定框架)

    4. 线程调度和优先级:可能有功能用于设置线程的优先级,以控制它们的执行顺序,或者设置线程的超时和取消机制。 5. 线程生命周期管理:包括启动、等待、停止和销毁线程的方法,确保程序在所有线程结束后能够正常...

    多线程框架通用多线程源码.zip

    暂停和恢复线程的能力对于控制任务执行顺序和资源分配至关重要。在易语言中,这可能通过类似`挂起线程`和`恢复线程`的命令实现。这些函数允许开发者在必要时暂时停止某个线程的执行,待条件满足后再继续执行,这对于...

    C#多线程互斥实例 多线程获取同一变量

    在编程领域,多线程是实现并发执行任务的重要机制,特别是在现代计算机系统中,多核处理器使得多线程成为提高程序性能的关键手段。C#语言提供了丰富的多线程支持,让我们能够编写出高效的多线程应用程序。在这个"多...

    Qt 多线程及简单实例 demo

    1.多线程的执行顺序无法保证,与操作系统的调度策略和线程优先级等因素有关。 2.多线程的切换可能发生在任何时刻、任何地点。 3.多线程对代码的敏感度高,因此对代码的细微修改都可能产生意想不到的效果。 先由一...

    多线程编程示例

    多线程是指在一个进程中同时执行多个独立的执行线程。在单核CPU系统中,操作系统通过时间片轮转的方式在不同线程之间切换,营造出并发执行的假象;而在多核或多处理器系统中,线程可以真正地并行运行,提高系统的...

    JAVA线程高级-线程按序交替执行

    在Java编程中,多线程是并发编程的重要组成部分,它允许程序同时执行多个任务,从而提高了系统的效率和响应性。然而,在某些场景下,我们可能需要控制线程的执行顺序,确保它们按照特定的顺序交替运行,这在并发编程...

    C#.NET多线程实例6个(包括多线程基本使用,多线程互斥等全部多线程使用实例),可直接运行

    6. **线程通信**:`WaitHandle`(如`AutoResetEvent`, `ManualResetEvent`, `CountdownEvent`)用于线程间的通信和同步,可以用来控制线程的执行顺序或作为线程间信号。 7. **线程状态管理**:`Thread`对象提供了多种...

    java多线程Demo

    一个线程调用另一个线程的join()方法,会等待该线程执行完毕后再继续执行,可以用来控制线程的执行顺序。 8. Volatile关键字: Volatile关键字可以保证线程间变量的可见性,但不能保证原子性。在多线程环境下,...

    多线程基础与基于多线程的简单聊天室

    1. **多线程的概念**:多线程是指在一个程序中同时执行多个不同的线程,每个线程可以独立地执行任务,提高了CPU资源的利用率,减少了程序的响应时间。 2. **Java中的线程**:Java提供两种创建线程的方式,一是通过...

Global site tag (gtag.js) - Google Analytics