class MultiThread
{
public static void main(String[] args)
{
MyThread mt = new MyThread();
new Thread(mt).start();
new Thread(mt).start();
new Thread(mt).start();
new Thread(mt).start();
while (true)
{
System.out.println("main : " + Thread.currentThread().getName());
}
}
}class MyThread implements Runnable
{
int index = 0;
public void run()
{
while (true)
{
System.out.println("thread : " + Thread.currentThread().getName() + " : " + index++);
}
}
}他说index的值是连续的,我看他运行的也是,但在我的机器上运行却不是连续,产生的进程对象顺序也不是连续的,为什么呢????
{
public static void main(String[] args)
{
MyThread mt = new MyThread();
new Thread(mt).start();
new Thread(mt).start();
new Thread(mt).start();
new Thread(mt).start();
while (true)
{
System.out.println("main : " + Thread.currentThread().getName());
}
}
}class MyThread implements Runnable
{
int index = 0;
public void run()
{
while (true)
{
System.out.println("thread : " + Thread.currentThread().getName() + " : " + index++);
}
}
}他说index的值是连续的,我看他运行的也是,但在我的机器上运行却不是连续,产生的进程对象顺序也不是连续的,为什么呢????
解决方案 »
- struts2 session获取值
- 收据,费用,单证用什么技术或框架
- java JTable里面CheckBox状态的判断
- 关于继承的疑惑
- 希望知道的人能回答下,该怎么做,关于java如何读取sqlserver中的text类型的数据。这个问题很古老,但是没有看到圆满的解决方案啊
- 关于Vector 矢量类的问题,由于小弟分所剩无几,请高手指教!
- jdk环境变量的设置,折磨好几天了!!
- java
- 用java写一个文件夹浏览器
- 特象UltraEdit的IDE工具: JawaBeginer..
- 急!!大家帮忙看看这个有什么好办法
- System.loadLibrary()能否调用其他路径下的dll文件?
个人感觉是因为几个线程都取得了index的值,但只能有一个线程在屏幕上打印,其他的都被卡在out.println那了
thread : Thread-3 : 4520
thread : Thread-3 : 4521
thread : Thread-3 : 4522
thread : Thread-0 : 4499
thread : Thread-0 : 4524
thread : Thread-0 : 4525
thread : Thread-0 : 4526
thread : Thread-0 : 4527
thread : Thread-0 : 4528
thread : Thread-0 : 4529
thread : Thread-0 : 4530
main : main
main : main
main : main
main : main
main : main
main : main
main : main
main : main
thread : Thread-3 : 4531
thread : Thread-3 : 4533
thread : Thread-3 : 4534
thread : Thread-3 : 4535
thread : Thread-3 : 4536
thread : Thread-3 : 4537
thread : Thread-3 : 4538
thread : Thread-3 : 4539
thread : Thread-1 : 4523
thread : Thread-1 : 4540
thread : Thread-1 : 4541
thread : Thread-1 : 4542
thread : Thread-1 : 4543
thread : Thread-1 : 4544
thread : Thread-1 : 4545
thread : Thread-1 : 4546
thread : Thread-2 : 4515
thread : Thread-2 : 4548
thread : Thread-2 : 4549
thread : Thread-2 : 4550
thread : Thread-2 : 4551
thread : Thread-2 : 4552
thread : Thread-2 : 4553
thread : Thread-2 : 4554
thread : Thread-3 : 4547
thread : Thread-3 : 4556
thread : Thread-3 : 4557
thread : Thread-3 : 4558
thread : Thread-3 : 4559
thread : Thread-3 : 4560
thread : Thread-3 : 4561
thread : Thread-3 : 4562
main : main
main : main
main : main
main : main
main : main
main : main
main : main
main : main
thread : Thread-0 : 4532
thread : Thread-0 : 4565
thread : Thread-0 : 4566
thread : Thread-0 : 4567
thread : Thread-0 : 4568
thread : Thread-0 : 4569
thread : Thread-0 : 4570
thread : Thread-0 : 4571
thread : Thread-3 : 4564
thread : Thread-3 : 4572
thread : Thread-3 : 4573
thread : Thread-3 : 4574
thread : Thread-3 : 4575
thread : Thread-3 : 4576
thread : Thread-3 : 4577
thread : Thread-3 : 4578
thread : Thread-2 : 4563
thread : Thread-2 : 4580
thread : Thread-2 : 4581
thread : Thread-2 : 4582
thread : Thread-2 : 4583
thread : Thread-2 : 4584
thread : Thread-2 : 4585
thread : Thread-2 : 4586
thread : Thread-1 : 4555
thread : Thread-1 : 4588无限循环。
{
public static void main(String[] args)
{
SellThread st = new SellThread();
new Thread(st).start();
new Thread(st).start();
new Thread(st).start();
new Thread(st).start();
}
}class SellThread implements Runnable
{
int tickets = 100;
public void run()
{
while (tickets > 0)
{
System.out.println(Thread.currentThread().getName() +
" sell tickets : " + tickets);
tickets--;
}
}
}还有这个例子,孙鑫的视频里他运行的结果是100到1,但是我机器出来的结果是:
Thread-0 sell tickets : 100
Thread-3 sell tickets : 100
Thread-1 sell tickets : 100
Thread-2 sell tickets : 100
Thread-1 sell tickets : 97
Thread-3 sell tickets : 98
Thread-3 sell tickets : 94
Thread-0 sell tickets : 99
Thread-3 sell tickets : 93
Thread-3 sell tickets : 91
Thread-3 sell tickets : 90
Thread-1 sell tickets : 95
Thread-2 sell tickets : 96
Thread-2 sell tickets : 87
Thread-3 sell tickets : 88
Thread-1 sell tickets : 88
Thread-1 sell tickets : 84
Thread-1 sell tickets : 83
Thread-1 sell tickets : 82
Thread-0 sell tickets : 92
Thread-1 sell tickets : 81
Thread-3 sell tickets : 85
Thread-2 sell tickets : 86
Thread-3 sell tickets : 78
Thread-1 sell tickets : 79
Thread-0 sell tickets : 80
Thread-1 sell tickets : 75
Thread-3 sell tickets : 76
Thread-2 sell tickets : 77
Thread-3 sell tickets : 72
Thread-1 sell tickets : 73
Thread-0 sell tickets : 74
Thread-1 sell tickets : 69
Thread-3 sell tickets : 70
Thread-2 sell tickets : 71
Thread-2 sell tickets : 65
Thread-2 sell tickets : 64
Thread-3 sell tickets : 66
Thread-3 sell tickets : 62
Thread-3 sell tickets : 61
Thread-3 sell tickets : 60
Thread-1 sell tickets : 67
Thread-0 sell tickets : 68
Thread-1 sell tickets : 58
Thread-3 sell tickets : 59
Thread-2 sell tickets : 63
Thread-3 sell tickets : 55
Thread-1 sell tickets : 56
Thread-0 sell tickets : 57
Thread-0 sell tickets : 51
Thread-0 sell tickets : 50
Thread-0 sell tickets : 49
Thread-0 sell tickets : 48
Thread-0 sell tickets : 47
Thread-0 sell tickets : 46
Thread-0 sell tickets : 45
Thread-0 sell tickets : 44
Thread-0 sell tickets : 43
Thread-0 sell tickets : 42
Thread-0 sell tickets : 41
Thread-0 sell tickets : 40
Thread-0 sell tickets : 39
Thread-0 sell tickets : 38
Thread-0 sell tickets : 37
Thread-0 sell tickets : 36
Thread-0 sell tickets : 35
Thread-0 sell tickets : 34
Thread-0 sell tickets : 33
Thread-0 sell tickets : 32
Thread-0 sell tickets : 31
Thread-0 sell tickets : 30
Thread-0 sell tickets : 29
Thread-1 sell tickets : 52
Thread-1 sell tickets : 27
Thread-1 sell tickets : 26
Thread-1 sell tickets : 25
Thread-3 sell tickets : 53
Thread-2 sell tickets : 54
Thread-3 sell tickets : 23
Thread-1 sell tickets : 24
Thread-0 sell tickets : 28
Thread-1 sell tickets : 20
Thread-3 sell tickets : 21
Thread-2 sell tickets : 22
Thread-3 sell tickets : 17
Thread-1 sell tickets : 18
Thread-0 sell tickets : 19
Thread-1 sell tickets : 14
Thread-3 sell tickets : 15
Thread-2 sell tickets : 16
Thread-2 sell tickets : 10
Thread-2 sell tickets : 9
Thread-2 sell tickets : 8
Thread-2 sell tickets : 7
Thread-3 sell tickets : 11
Thread-3 sell tickets : 5
Thread-3 sell tickets : 4
Thread-3 sell tickets : 3
Thread-1 sell tickets : 12
Thread-0 sell tickets : 13
Thread-1 sell tickets : 1
Thread-3 sell tickets : 2
Thread-2 sell tickets : 6奇怪?????
thread : Thread-1 : 7
thread : Thread-0 : 0
thread : Thread-0 : 8
thread : Thread-0 : 9
thread : Thread-0 : 10
thread : Thread-0 : 11
thread : Thread-3 : 3
thread : Thread-3 : 13
thread : Thread-3 : 14
thread : Thread-3 : 15
thread : Thread-3 : 16
thread : Thread-3 : 17
thread : Thread-3 : 18
thread : Thread-2 : 2
thread : Thread-2 : 20
thread : Thread-2 : 21
thread : Thread-2 : 22
thread : Thread-2 : 23
thread : Thread-2 : 24
thread : Thread-0 : 19
thread : Thread-0 : 26
thread : Thread-0 : 27
thread : Thread-0 : 28
thread : Thread-0 : 29
thread : Thread-0 : 30
thread : Thread-0 : 31
thread : Thread-0 : 32
thread : Thread-1 : 12
thread : Thread-1 : 34
thread : Thread-1 : 35
thread : Thread-1 : 36
thread : Thread-1 : 37
thread : Thread-1 : 38
thread : Thread-1 : 39
thread : Thread-1 : 40
thread : Thread-2 : 33
thread : Thread-2 : 42
thread : Thread-2 : 43
thread : Thread-2 : 44
thread : Thread-2 : 45
thread : Thread-2 : 46
thread : Thread-2 : 47
thread : Thread-2 : 48
thread : Thread-3 : 25
thread : Thread-3 : 50
thread : Thread-3 : 51
thread : Thread-3 : 52
thread : Thread-3 : 53
thread : Thread-3 : 54
thread : Thread-3 : 55
thread : Thread-3 : 56
thread : Thread-1 : 49
thread : Thread-1 : 58
thread : Thread-1 : 59
thread : Thread-1 : 60
thread : Thread-1 : 61
thread : Thread-1 : 62
thread : Thread-1 : 63
thread : Thread-1 : 64
thread : Thread-0 : 41
thread : Thread-0 : 66
thread : Thread-0 : 67
thread : Thread-0 : 68
thread : Thread-0 : 69
thread : Thread-0 : 70
thread : Thread-0 : 71
thread : Thread-0 : 72
thread : Thread-3 : 65
thread : Thread-3 : 74
thread : Thread-3 : 75
thread : Thread-3 : 76
thread : Thread-3 : 77
thread : Thread-3 : 78
thread : Thread-3 : 79
thread : Thread-3 : 80
thread : Thread-2 : 57
thread : Thread-2 : 82
thread : Thread-2 : 83
thread : Thread-2 : 84
thread : Thread-2 : 85
thread : Thread-2 : 86
thread : Thread-2 : 87
thread : Thread-2 : 88
thread : Thread-0 : 81
thread : Thread-0 : 90
thread : Thread-0 : 91
thread : Thread-0 : 92
thread : Thread-0 : 93
thread : Thread-0 : 94
thread : Thread-0 : 95
thread : Thread-0 : 96
thread : Thread-1 : 73
thread : Thread-1 : 98
thread : Thread-1 : 99
thread : Thread-2 : 97
thread : Thread-3 : 89好象可以这样解释:比如mt3取得一个值,还有没来得及打印,就立刻转入runnable, 然后可能此前取得值的mt2拿的了lock然后打印输出。所以结果不连续。
{
public static void main(String[] args)
{
SellThread st = new SellThread();
new Thread(st).start();
new Thread(st).start();
new Thread(st).start();
new Thread(st).start();
}
}class SellThread implements Runnable
{
int tickets = 100;
Object obj = new Object();
public void run()
{
while (true)
{
synchronized(obj)
{
if (tickets > 0)
{
try
{
Thread.sleep(10);
}
catch (Exception e)
{
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() +
" sell tickets : " + tickets);
tickets--;
}
}
//sell();
}
}
/*public synchronized void sell()
{
if (tickets > 0)
{
try
{
Thread.sleep(10);
}
catch (Exception e)
{
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() +
" sell tickets : " + tickets);
tickets--;
}
}*/
}