16.同步类容器Collections.synchronized
voctor动态数组、同步类容器,底层实现基于:Collections.synchronized
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Vector;
/**
* Created by liudan on 2017/7/9.
*/
public class MyThread2 extends Thread {
/*同步类容器、动态数组*/
public static void main(String[] args) {
/*final Vector<String> ticksts = new Vector<>();*/
List<String> ticksts = Collections.synchronizedList(new ArrayList<String>());
for (int i = 1; i <= 100; i++) {
ticksts.add("G1001-火车票-G000X" + i);
}
for (int i = 1; i <= 10; i++) {
new Thread("线程" + i) {
@Override
public void run() {
while (true) {
if (ticksts.isEmpty()) break;
System.err.println(Thread.currentThread().getName() + "\t" + ticksts.remove(0));
}
}
}.start();
}
}
}
输出:
线程001 G1001-火车票-G000X1
线程001 G1001-火车票-G000X2
线程001 G1001-火车票-G000X3
线程001 G1001-火车票-G000X4
线程002 G1001-火车票-G000X5
线程002 G1001-火车票-G000X7
线程001 G1001-火车票-G000X6
线程001 G1001-火车票-G000X9
线程001 G1001-火车票-G000X10
线程002 G1001-火车票-G000X8
package demo5;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Vector;
/**
* Created by liudan on 2017/7/9.
*/
public class MyThread2 extends Thread {
/*同步类容器、动态数组*/
public static void main(String[] args) {
/*final Vector<String> ticksts = new Vector<>();*/
List<String> ticksts = Collections.synchronizedList(new ArrayList<String>());
for (int i = 1; i <= 100; i++) {
ticksts.add("G1001-火车票-G000X" + i);
}
for (int i = 1; i <= 10; i++) {
new Thread("线程" + i) {
@Override
public void run() {
while (true) {
if (ticksts.isEmpty()) break;
System.err.println(Thread.currentThread().getName() + "\t" + ticksts.remove(0));
}
}
}.start();
}
}
}
输出:
线程001 G1001-火车票-G000X1
线程001 G1001-火车票-G000X2
线程001 G1001-火车票-G000X3
线程001 G1001-火车票-G000X4
线程002 G1001-火车票-G000X5
线程002 G1001-火车票-G000X7
线程001 G1001-火车票-G000X6
线程001 G1001-火车票-G000X9
线程001 G1001-火车票-G000X10
线程002 G1001-火车票-G000X8
16.同步类容器Collections.synchronized的更多相关文章
- Java线程同步类容器和并发容器(四)
同步类容器都是线程安全的,在某些场景下,需要枷锁保护符合操作,最经典ConcurrentModifiicationException,原因是当容器迭代的过程中,被并发的修改了内容. for (Iter ...
- 同步类容器和并发类容器——ConcurrentMap、CopyOnWrite、Queue
一 同步类容器同步类容器都是线程安全的,但在某些场景中可能需要加锁来保证复合操作. 符合操作如:迭代(反复访问元素,遍历完容器中所有元素).跳转(根据指定的顺序找到当前元素的下一个元素).条件运算. ...
- 15.同步类容器Vector
同步类容器1 1.线程都是安全的. 2.在某些场景下需要加锁来保护“复合操作” a.迭代:反复去访问元素.遍历完容器所有的元素 b.跳转:根据下标制定去访问查找元素 c.条件运算 3.复合操作在多线程 ...
- JUC源码分析-集合篇:并发类容器介绍
JUC源码分析-集合篇:并发类容器介绍 同步类容器是 线程安全 的,如 Vector.HashTable 等容器的同步功能都是由 Collections.synchronizedMap 等工厂方法去创 ...
- 并发编程(二)------并发类容器ConcurrentMap
并发类容器: jdk5.0以后提供了多种并发类容器来替代同步类容器从而改善性能. 同步类容器的状态都是串行化的. 他们虽然实现了线程安全,但是严重降低了并发性,在多线程环境时,严重降低了应用程序的吞吐 ...
- 深入理解Java中的同步静态方法和synchronized(class)代码块的类锁
一.回顾学习内容 在前面几篇博客中我我们已经理解了synchronized对象锁.对象锁的重入.synchronized方法块.synchronized非本对象的代码块, 链接:https://www ...
- LinkedHashSet、Map、Map接口HashMap、Hashtable,TreeSet、TreeMap、如何选择使用集合实现类,Collections工具类
一.Set接口实现类LinkedHashSet 实现继承图: 1.LinkedHashSet的全面说明 1) LinkedHashSet是 HashSet的子类 2) LinkedHashSet底层是 ...
- 操作集合的工具类:Collections
Java提供了一个操作Set.List和Map等集合的工具类:Collections,该工具类提供了大量方法对集合进行排序.查询和修改等操作,还提供了将集合对象置为不可变.对集合对象实现同步控制等方法 ...
- java两种同步机制的实现 synchronized和reentrantlock
java两种同步机制的实现 synchronized和reentrantlock 双11加保障过去一周,趁现在有空,写一点硬货,因为在进入阿里之后工作域的原因之前很多java知识点很少用,所以记录一下 ...
随机推荐
- 【总结】IE和Firefox的Javascript兼容性总结
长久以来JavaScript兼容性一直是Web开发者的一个主要问题.在正式规范.事实标准以及各种实现之间的存在的差异让许多开发者日夜煎熬.为此,主要从以下几方面差异总结IE和Firefox的Javas ...
- python_day5学习笔记
一.正则表达式 字符: \d 匹配任何十进制数:相当于类[0-9] \D 匹配任何非数字字符:相当于类[^0-9] \s 匹配任何空白字符:相当于类[ \t\n\r\f\v] \S 匹配任何非空 ...
- [PAT] 1146 Topological Order(25 分)
This is a problem given in the Graduate Entrance Exam in 2018: Which of the following is NOT a topol ...
- Disruptor Ringbuffer
系列译文: http://ifeve.com/disruptor/ 当有多个消费者时,(按Disruptor的设计)每个消费者各自控制自己的指针,依次读取每个Slot(也就是每个消费者都会读取到所有的 ...
- ES6的新增数据类型:Symbol
简介:Symbol类型是es6新增的一个数据类型,Es5的基本数据类型(undefined,null,Object,function,Number,string) Symbol值通过Symbol函数生 ...
- python 函数内置方法short_desc
1. 给函数设置一个文本 def action_checked(self, request): pass action_checked.short_desc = "签到" # sh ...
- hdu 1024(滚动数组+动态规划)
Max Sum Plus Plus Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...
- WordPress匿名投稿插件:DX-Contribute(WP我要投稿,我要爆料)
倡萌在<WordPress添加投稿功能(无需注册/可邮件通知站长和投稿人) >中分享过,通过修改主题文件实现游客快捷投稿的功能,但是有部分同学就是不太会动手,那么今天就分享一个WordPr ...
- 洛谷P2168 [NOI2015] 荷马史诗 [哈夫曼树]
题目传送门 荷马史诗 Description 追逐影子的人,自己就是影子. ——荷马 Allison 最近迷上了文学.她喜欢在一个慵懒的午后,细细地品上一杯卡布奇诺,静静地阅读她爱不释手的<荷马 ...
- 洛谷P2280 [HNOI2003] 激光炸弹 [前缀和]
题目传送门 题目描述 输入输出格式 输入格式: 输入文件名为input.txt 输入文件的第一行为正整数n和正整数R,接下来的n行每行有3个正整数,分别表示 xi,yi ,vi . 输出格式: 输出文 ...