linshuaiqqqqq 2010-05-11 10:12
浏览 246
已采纳

Java 在Win7运行不正常是怎么回事?

如下测试代码:
[code="java"]
public class ThreadDemo1 implements Runnable {

public void run() {
    for (int i = 0; i < 100; i++) {
        System.out.println(Thread.currentThread().getName()+" "+i);

    }
}

}
public class Test {
public static void main(String[] args) {

    ThreadDemo1 td1 = new ThreadDemo1();

    Thread t1 = new Thread(td1);
    Thread t2 = new Thread(td1);

    t1.start();
    t2.start();

    for (int i = 0; i < 100; i++) {
        System.out.println("main " +i);
    }

}

[/code]
运行结果:
main 0
main 1
main 2
main 3
main 4
main 5
main 6
main 7
main 8
main 9
main 10
main 11
main 12
main 13
main 14
main 15
main 16
main 17
main 18
main 19
main 20
main 21
main 22
main 23
main 24
main 25
main 26
main 27
main 28
main 29
main 30
main 31
main 32
main 33
main 34
main 35
main 36
main 37
main 38
main 39
main 40
main 41
main 42
main 43
main 44
main 45
main 46
main 47
main 48
main 49
main 50
main 51
main 52
main 53
main 54
main 55
main 56
main 57
main 58
main 59
main 60
main 61
main 62
main 63
main 64
main 65
main 66
main 67
main 68
main 69
main 70
main 71
main 72
main 73
main 74
main 75
main 76
main 77
main 78
main 79
main 80
main 81
main 82
main 83
main 84
main 85
main 86
main 87
main 88
main 89
main 90
main 91
main 92
main 93
main 94
main 95
main 96
main 97
main 98
main 99
Thread-1 0
Thread-1 1
Thread-1 2
Thread-1 3
Thread-1 4
Thread-1 5
Thread-1 6
Thread-1 7
Thread-1 8
Thread-1 9
Thread-1 10
Thread-1 11
Thread-1 12
Thread-1 13
Thread-1 14
Thread-1 15
Thread-1 16
Thread-1 17
Thread-1 18
Thread-1 19
Thread-1 20
Thread-1 21
Thread-1 22
Thread-1 23
Thread-1 24
Thread-1 25
Thread-1 26
Thread-1 27
Thread-1 28
Thread-1 29
Thread-1 30
Thread-1 31
Thread-1 32
Thread-1 33
Thread-1 34
Thread-1 35
Thread-1 36
Thread-1 37
Thread-1 38
Thread-1 39
Thread-1 40
Thread-1 41
Thread-1 42
Thread-1 43
Thread-1 44
Thread-1 45
Thread-1 46
Thread-1 47
Thread-1 48
Thread-1 49
Thread-1 50
Thread-1 51
Thread-1 52
Thread-1 53
Thread-1 54
Thread-1 55
Thread-1 56
Thread-1 57
Thread-1 58
Thread-1 59
Thread-1 60
Thread-1 61
Thread-1 62
Thread-1 63
Thread-1 64
Thread-1 65
Thread-1 66
Thread-1 67
Thread-1 68
Thread-1 69
Thread-1 70
Thread-1 71
Thread-1 72
Thread-1 73
Thread-1 74
Thread-1 75
Thread-1 76
Thread-1 77
Thread-1 78
Thread-1 79
Thread-1 80
Thread-1 81
Thread-1 82
Thread-1 83
Thread-1 84
Thread-1 85
Thread-1 86
Thread-1 87
Thread-1 88
Thread-1 89
Thread-1 90
Thread-1 91
Thread-1 92
Thread-1 93
Thread-1 94
Thread-1 95
Thread-1 96
Thread-1 97
Thread-1 98
Thread-1 99
Thread-0 0
Thread-0 1
Thread-0 2
Thread-0 3
Thread-0 4
Thread-0 5
Thread-0 6
Thread-0 7
Thread-0 8
Thread-0 9
Thread-0 10
Thread-0 11
Thread-0 12
Thread-0 13
Thread-0 14
Thread-0 15
Thread-0 16
Thread-0 17
Thread-0 18
Thread-0 19
Thread-0 20
Thread-0 21
Thread-0 22
Thread-0 23
Thread-0 24
Thread-0 25
Thread-0 26
Thread-0 27
Thread-0 28
Thread-0 29
Thread-0 30
Thread-0 31
Thread-0 32
Thread-0 33
Thread-0 34
Thread-0 35
Thread-0 36
Thread-0 37
Thread-0 38
Thread-0 39
Thread-0 40
Thread-0 41
Thread-0 42
Thread-0 43
Thread-0 44
Thread-0 45
Thread-0 46
Thread-0 47
Thread-0 48
Thread-0 49
Thread-0 50
Thread-0 51
Thread-0 52
Thread-0 53
Thread-0 54
Thread-0 55
Thread-0 56
Thread-0 57
Thread-0 58
Thread-0 59
Thread-0 60
Thread-0 61
Thread-0 62
Thread-0 63
Thread-0 64
Thread-0 65
Thread-0 66
Thread-0 67
Thread-0 68
Thread-0 69
Thread-0 70
Thread-0 71
Thread-0 72
Thread-0 73
Thread-0 74
Thread-0 75
Thread-0 76
Thread-0 77
Thread-0 78
Thread-0 79
Thread-0 80
Thread-0 81
Thread-0 82
Thread-0 83
Thread-0 84
Thread-0 85
Thread-0 86
Thread-0 87
Thread-0 88
Thread-0 89
Thread-0 90
Thread-0 91
Thread-0 92
Thread-0 93
Thread-0 94
Thread-0 95
Thread-0 96
Thread-0 97
Thread-0 98
Thread-0 99

为什么不是交替?
在旁边一台机子上(XP)运行正常。 发给我同学(Win7)运行也是正常
是我系统的问题么?我不会要重装系统吧。
Win7 jdk1.6

  • 写回答

3条回答 默认 最新

  • qwe_rt 2010-05-11 10:24
    关注

    [quote] Thread t1 = new Thread(td1);

    Thread t2 = new Thread(td1);[/quote]
    这里两个线程,再加上mian方法这个主线程,一共三个线程。

    这个三个线程同时进行,获取cpu这个资源是不确定的。

    谁获取的CPU的资源谁就运行。

    如果你想让它们交替显示,可以使用sleep方法,让当前占cPu的线程阻塞并让出cpu这个资源。
    推荐使用TimeUnit.MILLISECONDS.sleep()这个方法来休眠当前的线程。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥20 关于#qt#的问题:Qt代码的移植问题
  • ¥50 求图像处理的matlab方案
  • ¥50 winform中使用edge的Kiosk模式
  • ¥15 关于#python#的问题:功能监听网页
  • ¥15 怎么让wx群机器人发送音乐
  • ¥15 fesafe材料库问题
  • ¥35 beats蓝牙耳机怎么查看日志
  • ¥15 Fluent齿轮搅油
  • ¥15 八爪鱼爬数据为什么自己停了
  • ¥15 交替优化波束形成和ris反射角使保密速率最大化