打字猴:1.700445491e+09
1700445491
1700445492 public void run(){
1700445493
1700445494 while(true){
1700445495
1700445496 tickets.add(“车票”+new Random().nextInt());
1700445497
1700445498 }
1700445499
1700445500 };
1700445501
1700445502 };
1700445503
1700445504 //售票
1700445505
1700445506 Thread saleThread=new Thread(){
1700445507
1700445508 public void run(){
1700445509
1700445510 for(String ticket:tickets){
1700445511
1700445512 tickets.remove(ticket);
1700445513
1700445514 }
1700445515
1700445516 };
1700445517
1700445518 };
1700445519
1700445520 //启动退票线程
1700445521
1700445522 returnThread.start();
1700445523
1700445524 //启动售票线程
1700445525
1700445526 saleThread.start();
1700445527
1700445528 }
1700445529
1700445530 模拟火车站售票程序,先初始化一堆火车票,然后开始出售,同时也有退票产生,这段程序有没有问题?可能会有读者看出了问题,ArrayList是线程不安全的,两个线程访问同一个ArrayList数组肯定会有问题。
1700445531
1700445532 没错,确定有问题,运行结果如下:
1700445533
1700445534 Exception in thread”Thread-1”java.util.ConcurrentModifcationException
1700445535
1700445536 at java.util.AbstractList$Itr.checkForComodification(AbstractList.java:372)
1700445537
1700445538 at java.util.AbstractList$Itr.next(AbstractList.java:343)
1700445539
1700445540 at Client$2.run(Client.java:28)
[ 上一页 ]  [ :1.700445491e+09 ]  [ 下一页 ]