关于java集合读写的事务性 如果开启两个线程, 一个向hashmap中写数据, 另一个从hashmap中读数据。对于读线程而言, 读取的hashmap中的每一条记录是否能保证都是完整的,并且正确? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不能,因为HashMap不是线程安全的,所以在多个线程同时读和写的时候,会报ConcurrentModificationException异常 想要线程安全的,你可以用ConcurrentHashMap 不能HashMap多线程操作不安全,往里面写数据的时候你必须对他加上锁,不让其他线程写,或者读 在执行读操作和写操作的时候 都加上同步锁 sychronized即可! 首先参考下这个页面:http://stackoverflow.com/questions/12444042/hashmap-safe-for-multithreaded-access-for-multiple-readers-and-one-single-writeHashMap 的文档是这样说的:当存在多个线程读取,且至少有一个线程进行修改时,必须在外部对它进行同步限制。进一步说,HashMap 的每个元素是以节点的形式保存的,而 put() 操作是一个复杂的过程,在这个过程中,节点内容会存在一系列不断变更的中间状态。如果这时候 get() 操作刚好读取了这个元素,那么它得到的就会是一个不正确的中间状态,可能导致返回错误的结果。所以简单来说,HashMap 是线程不安全的,应该避免多个线程访问同一个 HashMap 对象。 意思是通配符不但可以由shell解释,也可以由find程序解释@6楼 谁能用java完整的实现:银行账户管理系统 守护的java_代码公布 JFrame 的最大,最小化旁边可以加其他的按钮吗? Socket client = serversocket.accept();client使用的port和建立serversocket时候使用的port是一个吗? java.net.socketpermission的问题 -1>>32还是-1, -1>>>32为什么还是-1? Java Socket发送数据求助 连接数据库后,怎么往数据库中写数据,即增加新的记录 计算器功能的实现?怎样在循环监听中实现加减乘除... jni加载dll文件报错UnsatisfiedLinkError 为什么要使用构造方法 Java swing 问题 求解决
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货