导航:首页 > 编程语言 > java创建线程安全的集合

java创建线程安全的集合

发布时间:2022-01-19 17:52:12

1. java哪些集合类是线程安全的

在集抄合框架中,有些类是线程安全的袭,这些都是jdk1.1中的出现的。在jdk1.2之后,就出现许许多多非线程安全的类。 下面是这些线程安全的同步的类:
vector:就比arraylist多了个同步化机制(线程安全),因为效率较低,现在已经不太建议使用。在web应用中,特别是前台页面,往往效率(页面响应速度)是优先考虑的。
statck:堆栈类,先进后出
hashtable:就比hashmap多了个线程安全
enumeration:枚举,相当于迭代器
除了这些之外,其他的都是非线程安全的类和接口。
线程安全的类其方法是同步的,每次只能一个访问。是重量级对象,效率较低。
其他:
1. hashtable跟hashmap的区别
hashtable是线程安全的,即hashtable的方法都提供了同步机制;hashmap不是线程安全的,即不提供同步机制 ;hashtable不允许插入空值,hashmap允许!

2. java线程安全的集合还要加锁吗

线程安全是指要控制多个线程对某个资源的有序访问或修改,而在这些线程之间没有产生冲突。 在Java里,线程安全一般体现在两个方面: 1、多个thread对同一个java实例的访问(read和modify)不会相互干扰,它主要体现在关键字synchronized。

3. Java中怎样创建线程安全的方法

很简单的代码如下:
public class Singleton {
private static Singleton instance = null;
private Singleton() {}
public static synchronized Singleton getInstance(){
if (instance == null) instance = new Singleton();
return instance;
}
}

4. Java线程安全,集合类练习

你是要长度为10的 队列吧?
删除在头部,相当于出栈

那不就是先进先出么? --队列?

然后给你搞一个多线程队列就ok了 --------------
/**
* 容量为10的 队列,多线程,线程要安全
* 容器为 集合,我选用linkedList,因为add 和 del 比较多,没说select的情况
* 内部元素为int、
*
* 其实这东西 底层用数组最好。一下就可以控制lenght
* @author wangfulin
*/
public class T {

public static Q q;
private _Add add = new _Add();
private _Del del = new _Del();

public static void main(String[] args) {

int time = 200;// 运行次数
for (int i = 0; i < time; i++) {
q = Q.getInstance();
new T().getAdd().start();
new T().getDel().start();
q.getSize();
}
// 备注,最后如果剩余数目不是0,那肯定是先执行的del()方法
//也就是说,一开始就打印 对应个数的 0 !
//觉得好,分给我啊!要不我伤心啊
}

_Add getAdd() {
return new _Add();
}
_Del getDel() {
return new _Del();
}

// 模拟调用对象
class _Add extends Thread {
public void run() {
Q.getInstance().add(1);
}
}
class _Del extends Thread {
public void run() {
Q.getInstance().del();

}
}
}
/**
* 多线程就要单例呗
* @author wangfulin
*/
class Q {
public static List list = new LinkedList();
public static Q q = new Q();
private Q() {}
public static Q getInstance() {
return q;
}
public void add(int i) {
synchronized (this) {
while(list.size() >= 10) {
del();
}
list.add(i);//这里保证了,最多不过10个
}
}
public void del() {
synchronized (this) {
if (list.size() == 0) {
return;
}
list.remove(list.size() - 1);
}
}
public void getSize() {
System.out.println(list.size());
}
}

5. 创建一个线程安全的set集合

可以利用Collections工具类的synchronizedSet方法修饰一个非同步的Set变成同步Set

Set<T>set=newHashSet<T>();//非同步,非线程安全的Set
Set<T>syncSet=Collections.synchronizedSet(set);//返回了一个线程安全的Set

6. Java集合中哪些类是线程安全的

线程安全类

在集合框架中,有些类是线程安全的,这些都是jdk1.1中的出现的。在jdk1.2之后,就出现许许多多非线程安全的类。 下面是这些线程安全的同步的类:

vector:就比arraylist多了个同步化机制(线程安全),因为效率较低,现在已经不太建议使用。在web应用中,特别是前台页面,往往效率(页面响应速度)是优先考虑的。

statck:堆栈类,先进后出

hashtable:就比hashmap多了个线程安全

enumeration:枚举,相当于迭代器

除了这些之外,其他的都是非线程安全的类和接口。

线程安全的类其方法是同步的,每次只能一个访问。是重量级对象,效率较低。

其他:

1. hashtable跟hashmap的区别

hashtable是线程安全的,即hashtable的方法都提供了同步机制;hashmap不是线程安全的,即不提供同步机制 ;hashtable不允许插入空值,hashmap允许!

2. 多线程并发修改一 个 集合 怎么办

用老的Vector/Hashtable类

StringBuffer是线程安全,而StringBuilder是线程不安全的。对于安全与不安全没有深入的理解情况下,易造成这样的错觉,如果对于StringBuffer的操作均是线程安全的,然而,Java给你的保证的线程安全,是说它的方法是执行是排它的,而不是对这个对象本身的多次调用情况下,还是安全的。看看下边的例子,在StringBufferTest中有一个数据成员contents它是用来扩展的,它的每一次append是线程安全的,但众多次append的组合并不是线程安全的,这个输出结果不是太可控的,但如果对于log和getContest方法加关键字synchronized,那么结果就会变得非常条理,如果换成StringBuider甚至是append到一半,它也会让位于其它在此基础上操作的线程:

7. 有个关于java集合和线程安全的问题想请教下各位大神。。

Vector Hashtable是线程安全的,Arraylist和Hashmap是不安全的,尽量用线程安全的类,要不然就加锁……

8. java集合类中哪些是线程安全的

一些历史类的一般是线程安全的,例如:Vector,HashTable等
在jdk升级后,出现了替代一些集合的类,ArrayList,HashMap等,一般都是线程不安全的。

9. java线程安全的集合不能保证线程安全

理论上来说你的proct list应该是线程安全的,你把你的代码贴出来看看呗,看看你是怎么操作proct,又是如何出现数据不一致的

阅读全文

与java创建线程安全的集合相关的资料

热点内容
怎么看建行app号码 浏览:62
主角姓叶的被家族遗弃 浏览:650
梅高美网站是做什么的 浏览:32
重生二战后残兵建国 浏览:231
相亲网站推广费用一般多少钱 浏览:259
excel如何提取多个txt文件的内容 浏览:403
英雄无敌那个版本最好玩 浏览:347
pdf如何免费合并成一个pdf文件 浏览:950
编程m08代码是什么意思 浏览:486
史泰龙电影大全50部 浏览:696
雪中悍刀行同人小说 浏览:521
635接iphone6 浏览:496
韩国剧情电影在线观看影片 浏览:801
google浏览器快捷工具 浏览:92
mac全屏视频教程 浏览:267
编程猫的程序是哪个 浏览:56
p2p如何利用大数据 浏览:338
法国啄木鸟经典作品都有哪些 浏览:564
有个小说主角叫苏晨 浏览:87
有一本小说主角叫林晨 浏览:817

友情链接