1700445470
编写高质量代码:改善Java程序的151个建议 建议80:多线程使用Vector或HashTable
1700445471
1700445472
Vector是ArrayList的多线程版本,HashTable是HashMap的多线程版本,这些概念我们都很清楚,也被前辈嘱咐过很多次,但我们经常会逃避使用Vector和HashTable,因为用得少,不熟嘛!只有在真正需要的时候才会想要使用它们,但问题是什么时候算真正需要呢?我们来看一个例子,看看使用线程安全的Vector是否可以解决问题,代码如下:
1700445473
1700445474
public static void main(String[]args){
1700445475
1700445476
//火车票列表
1700445477
1700445478
final List<String>tickets=new ArrayList<String>();
1700445479
1700445480
//初始化票据池
1700445481
1700445482
for(int i=0;i<100000;i++){
1700445483
1700445484
tickets.add(“火车票”+i);
1700445485
1700445486
}
1700445487
1700445488
//退票
1700445489
1700445490
Thread returnThread=new Thread(){
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
};
[
上一页 ]
[ :1.700445469e+09 ]
[
下一页 ]