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知识点很少用,所以记录一下 ...
随机推荐
- poj 3404&&poj1700(贪心)
Bridge over a rough river Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 4143 Accept ...
- python 函数的几个属性 func_name, func_code等
直接见代码: #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2018/07/25 10:14 def add(x=0, y=1): & ...
- 【转载】Python,使用Wheel打包
转载自: http://blog.sina.com.cn/s/blog_1318255b00102wbtz.html Python的第一个主流打包格式是.egg文件,现在大家庭中又有了一个叫做Whee ...
- vConsole ~ 移动开发调试工具
在开发移动端项目时,有时候在PC端好好的,但是到了手机上出bug,很难调试,这时候可以用vConsole调试工具 使用方式 1.直接引入 <script src="vconsole.m ...
- js判断网络连接情况:navigator.onLine
<body> <h1 id="text">websong</h1> </body> <script> var text= ...
- 转:Apache+Fastcgi+Django
07年作者就贴出的文章了,可见多么古老的运行方式还在用. 转:http://www.cnblogs.com/RChen/archive/2007/03/23/django_fcgi.html 首先要安 ...
- 如何在eclipse 中安装 spring IDE
1.先 确定 当前的eclipse 的版本:(步骤如下) 2.下载spring ide(请确定好ecplice 的版本号) http://spring.io/tools/sts/all 最后: 安装 ...
- flutter vscode插件
代码片段
- Luogu P2146 软件包管理器(树链剖分+线段树)
题意 给定\(n\)个软件包,每个软件包都有一个依赖软件包,安装一个软件包必须安装他的依赖软件包,卸载一个软件包必须先卸载所有依赖于它的软件包.给定\(m\)此操作,每次一个操作\(install/u ...
- 【POJ 2154】 Color (置换、burnside引理)
Color Description Beads of N colors are connected together into a circular necklace of N beads (N< ...