多线程13--多线程并发购票--低效的线程安全的车票容器

Posted 黑土白云

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多线程13--多线程并发购票--低效的线程安全的车票容器相关的知识,希望对你有一定的参考价值。

1. final List<String> synchronizedList = Collections.synchronizedList(tickets);//list变成线程安全的

技术分享图片
  1 public class Tickets {
  2     public static void main(String[] args) {
  3         //final Vector<String> tickets = new Vector<String>();
  4         final List<String> tickets = new ArrayList<>();
  5         for (int i = 1; i <= 100; i++) {
  6             tickets.add("火车票"+i);
  7         }
  8         final List<String> synchronizedList = Collections.synchronizedList(tickets);//list变成线程安全的
  9 
 10         //创建10个线程
 11         for (int i = 1; i <= 10; i++) {
 12             new Thread("线程"+i){
 13                 public void run() {
 14                     while(true){
 15                         if(tickets.isEmpty()) break;
 16                         System.out.println(Thread.currentThread().getName()+"购买了火车票"+synchronizedList.remove(0));
 17                     }
 18                 }
 19             }.start();
 20         }
 21     }
 22     /*
 23     线程1购买了火车票火车票1
 24     线程1购买了火车票火车票2
 25     线程1购买了火车票火车票3
 26     线程1购买了火车票火车票4
 27     线程1购买了火车票火车票5
 28     线程1购买了火车票火车票6
 29     线程1购买了火车票火车票7
 30     线程1购买了火车票火车票8
 31     线程1购买了火车票火车票9
 32     线程1购买了火车票火车票10
 33     线程1购买了火车票火车票11
 34     线程1购买了火车票火车票12
 35     线程1购买了火车票火车票13
 36     线程1购买了火车票火车票14
 37     线程1购买了火车票火车票15
 38     线程1购买了火车票火车票16
 39     线程1购买了火车票火车票17
 40     线程1购买了火车票火车票18
 41     线程1购买了火车票火车票19
 42     线程1购买了火车票火车票20
 43     线程1购买了火车票火车票21
 44     线程1购买了火车票火车票22
 45     线程1购买了火车票火车票23
 46     线程1购买了火车票火车票24
 47     线程1购买了火车票火车票25
 48     线程1购买了火车票火车票26
 49     线程1购买了火车票火车票27
 50     线程1购买了火车票火车票28
 51     线程1购买了火车票火车票29
 52     线程2购买了火车票火车票30
 53     线程1购买了火车票火车票31
 54     线程1购买了火车票火车票32
 55     线程1购买了火车票火车票33
 56     线程1购买了火车票火车票34
 57     线程1购买了火车票火车票35
 58     线程1购买了火车票火车票36
 59     线程1购买了火车票火车票37
 60     线程1购买了火车票火车票38
 61     线程1购买了火车票火车票39
 62     线程1购买了火车票火车票40
 63     线程1购买了火车票火车票41
 64     线程3购买了火车票火车票42
 65     线程2购买了火车票火车票44
 66     线程1购买了火车票火车票43
 67     线程2购买了火车票火车票46
 68     线程3购买了火车票火车票45
 69     线程2购买了火车票火车票48
 70     线程1购买了火车票火车票47
 71     线程2购买了火车票火车票50
 72     线程3购买了火车票火车票49
 73     线程2购买了火车票火车票52
 74     线程1购买了火车票火车票51
 75     线程2购买了火车票火车票54
 76     线程3购买了火车票火车票53
 77     线程2购买了火车票火车票56
 78     线程1购买了火车票火车票55
 79     线程2购买了火车票火车票58
 80     线程3购买了火车票火车票57
 81     线程2购买了火车票火车票60
 82     线程1购买了火车票火车票59
 83     线程2购买了火车票火车票62
 84     线程3购买了火车票火车票61
 85     线程2购买了火车票火车票64
 86     线程1购买了火车票火车票63
 87     线程4购买了火车票火车票67
 88     线程2购买了火车票火车票66
 89     线程3购买了火车票火车票65
 90     线程2购买了火车票火车票70
 91     线程4购买了火车票火车票69
 92     线程1购买了火车票火车票68
 93     线程4购买了火车票火车票73
 94     线程2购买了火车票火车票72
 95     线程3购买了火车票火车票71
 96     线程2购买了火车票火车票76
 97     线程4购买了火车票火车票75
 98     线程1购买了火车票火车票74
 99     线程5购买了火车票火车票80
100     线程4购买了火车票火车票79
101     线程2购买了火车票火车票78
102     线程3购买了火车票火车票77
103     线程2购买了火车票火车票84
104     线程4购买了火车票火车票83
105     线程5购买了火车票火车票82
106     线程1购买了火车票火车票81
107     线程5购买了火车票火车票88
108     线程4购买了火车票火车票87
109     线程2购买了火车票火车票86
110     线程3购买了火车票火车票85
111     线程2购买了火车票火车票92
112     线程4购买了火车票火车票91
113     线程5购买了火车票火车票90
114     线程4购买了火车票火车票95
115     线程6购买了火车票火车票94
116     线程1购买了火车票火车票89
117     线程4购买了火车票火车票98
118     线程2购买了火车票火车票97
119     线程5购买了火车票火车票96
120     线程3购买了火车票火车票93
121     线程6购买了火车票火车票100
122     线程1购买了火车票火车票99 */
123 
124 }
View Code

 

以上是关于多线程13--多线程并发购票--低效的线程安全的车票容器的主要内容,如果未能解决你的问题,请参考以下文章

JavaExp10:多线程设计,彩票购票问题

JavaExp10:多线程设计,彩票购票问题

多线程安全问题及各种锁

怎么实现springMVC 多线程并发

《Linux 应用编程》—第13章 Linux 多线程编程

多线程与高并发线程安全