黑马程序员技术交流社区

标题: 集合学完了,一直有个疑问 [打印本页]

作者: 程洋    时间: 2013-12-18 17:14
标题: 集合学完了,一直有个疑问
再讲集合的时候,大多数集合都是线程不同步的,这里的线程不同步是什么意思,具体在线程中是怎样体现的,求大神用代码讲解下
作者: 纷飞尽    时间: 2013-12-18 17:20

Java中常用的集合框架推荐使用的三个实现类:HashSet\ArrayList\HashMap都是线程不安全的.如果有多条线程访问它们,而且有超过一条的线程试图修改它们,则可能出现错务.Collections提供了多个静态方法用于创建同步集合
下面程序创建了四个同步的集合对象

import java.util.*;
public class  TestSynchronized
{
public static void main(String[] args)
{
//下面程序创建了四个同步的集合对象
Collection c=Collections.synchronizedCollection(new ArrayList());
List list=Collections.synchronizedList(new ArrayList());
Set s=Collections.synchronizedSet(new HashSet());
Map m=Collections.synchronizedMap(new HashMap());
}
}
Vector,HashTable是线程安全的集合类,不过,这两种类是很早的用法,现在一般要尽量少采用
作者: 黄伟财    时间: 2013-12-19 15:37
同步就是协同步调,按预定的先后次序进行运行;异步和同步相反,是几个程序同时运行CPU会每个程序都运行一会,这样就会避免计算机长时间被某一个程序占用。
作者: 花生壳    时间: 2013-12-19 19:26
Java中常用的集合框架推荐使用的三个实现类:HashSet\ArrayList\HashMap都是线程不安全的.如果有多条线程访问它们,而且有超过一条的线程试图修改它们,则可能出现错务.Collections提供了多个静态方法用于创建同步集合
下面程序创建了四个同步的集合对象

import java.util.*;
public class  TestSynchronized
{
public static void main(String[] args)
{
//下面程序创建了四个同步的集合对象
Collection c=Collections.synchronizedCollection(new ArrayList());
List list=Collections.synchronizedList(new ArrayList());
Set s=Collections.synchronizedSet(new HashSet());
Map m=Collections.synchronizedMap(new HashMap());
}
}
Vector,HashTable是线程安全的集合类,不过,这两种类是很早的用法,现在一般要尽量少采用


写的很好
作者: 任亚俊    时间: 2013-12-20 11:46
多线程学过了吗,这个需要多线程知识,学了多线程就好理解了。在多线程中,多个线程可以共享一个变量,线程不安全的类,一般不能做共享变量。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2