A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 程洋 中级黑马   /  2013-12-18 17:14  /  1036 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

再讲集合的时候,大多数集合都是线程不同步的,这里的线程不同步是什么意思,具体在线程中是怎样体现的,求大神用代码讲解下

评分

参与人数 1黑马币 +5 收起 理由
乔兵 + 5

查看全部评分

4 个回复

倒序浏览

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是线程安全的集合类,不过,这两种类是很早的用法,现在一般要尽量少采用

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
同步就是协同步调,按预定的先后次序进行运行;异步和同步相反,是几个程序同时运行CPU会每个程序都运行一会,这样就会避免计算机长时间被某一个程序占用。

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
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是线程安全的集合类,不过,这两种类是很早的用法,现在一般要尽量少采用


写的很好

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
多线程学过了吗,这个需要多线程知识,学了多线程就好理解了。在多线程中,多个线程可以共享一个变量,线程不安全的类,一般不能做共享变量。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马