一个多线程的代码,看不懂

为什么输出的顺序和start方法调用的顺序不同,为什么明明是循环输出数字顺序不同,为什么有重复的 为什么同步加锁后总是一个线程占有,输出的全是张三买的票什么情况?同步好难图片图片图片图片

我想你需要好好理解下start()和run()的区别,
另外你加了同步锁。。对同一资源。。你这个线程还没跑完肯定会被占用啊。另外为啥是张三买的。。我也不知道。。因为我看不清

完全看不清图片,再发一次吧,正好今天休息,好多人能帮你看看

当前车票的Id :11购票人姓名: 张三票号是: 198
当前车票的Id :15购票人姓名: 刘海票号是: 96
当前车票的Id :14购票人姓名: 宋六票号是: 97
当前车票的Id :13购票人姓名: 王五票号是: 98
当前车票的Id :12购票人姓名: 李四票号是: 99
当前车票的Id :14购票人姓名: 宋六票号是: 95
当前车票的Id :15购票人姓名: 刘海票号是: 93
当前车票的Id :13购票人姓名: 王五票号是: 93
当前车票的Id :11购票人姓名: 张三票号是: 94
当前车票的Id :12购票人姓名: 李四票号是: 94
当前车票的Id :14购票人姓名: 宋六票号是: 92
当前车票的Id :15购票人姓名: 刘海票号是: 98
当前车票的Id :11购票人姓名: 张三票号是: 89
当前车票的Id :12购票人姓名: 李四票号是: 89
当前车票的Id :13购票人姓名: 王五票号是; 91
当前车票的Id :14购票人姓名: 宋六票号是: 88
当前车票的Id :11购票人姓名: 张三票号是: 86
当前车票的Id :15购票人姓名: 刘海票号是: 85
当前车票的Id :12购票人姓名: 李四票号是: 87
当前车票的Id :13购票人姓名: 王五票号是: 87
当前车票的Id :13购票人姓名: 王五票号是: 84
当前车票的Id :11购票人姓名: 张三票号是: 83
当前车票的Id :14购票人姓名: 宋六票号是: 84
当前车票的Id :15购票人姓名: 刘海票号是: 83
当前车票的Id: 12购票人姓名: 李四票号是: 84
当前车票的Id :14购票人姓名: 宋六票号是: 81
当前车票的Id :15购票人姓名: 刘海票号是: 88
当前车票的Id :12购票人姓名: 李四票号是: 88
当前车票的Id :11购票人姓名: 张三票号是: 82
当前车票的Id :13购票人姓名: 王五票号是: 81
当前车票的Id :15购票人姓名: 刘海票号是: 77
当前车票的Id :13购票人姓名: 王五票号是: 76
当前车票的Id :11购票人姓名: 张三票号是: 76
当前车票的Id :14购票人姓名: 宋六票号是: 79
当前车票的Id :12购票人姓名: 李四票号是: 78
当前车票的Id :15购票人姓名: 刘海票号是: 75
当前车票的Id: 12购票人姓名: 李四票号是: 74
当前车票的Id :11购票人姓名: 张三票号是: 73
当前车票的Id :14购票人姓名: 宋六票号是: 74