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

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

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这三个优先级.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值