package concurrentMap;
import java.util.HashMap;
import java.util.concurrent.ConcurrentHashMap;
public class ConcurrencyHashMapTest {
public ConcurrentHashMap<Integer, HashMap<Integer, Integer>> pMsgs = new ConcurrentHashMap<Integer, HashMap<Integer, Integer>>();
public ConcurrencyHashMapTest() {
}
/**
* @param args
*/
public static void main(String[] args) {
ConcurrencyHashMapTest chmt = new ConcurrencyHashMapTest() ;
Thread t1 = new Thread(new Sender(chmt.pMsgs,1)) ; //内部类问题报错, No enclosing instance of type ConcurrencyHashMapTest is accessible. Must qualify the allocation with an enclosing instance of type ConcurrencyHashMapTest (e.g. x.new A() where x is an instance of ConcurrencyHashMapTest).
Thread t2 = new Thread(new Sender(chmt.pMsgs,2)) ;
Thread t3 = new Thread(new Sender(chmt.pMsgs,2)) ;
t1.start() ;
t2.start() ;
t3.start() ;
}
class Sender implements Runnable {
ConcurrentHashMap<Integer, HashMap<Integer, Integer>> pMsgs;
int id = -1 ;
public Sender(ConcurrentHashMap<Integer, HashMap<Integer, Integer>> pMsgs, int partition) {
this.pMsgs = pMsgs;
id = partition ;
}
@Override
public void run() {
HashMap<Integer, Integer> partition = new HashMap<Integer, Integer>();
for (int i = 0; i < 10000; i++)
partition.put(i, 200);
pMsgs.put(id, partition);
}
}
}
</pre><pre code_snippet_id="1688919" snippet_file_name="blog_20160519_1_9021163" name="code" class="java">修改后<pre name="code" class="java">package concurrentMap;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;
import java.util.concurrent.ConcurrentHashMap;
public class ConcurrencyHashMapTest {
public ConcurrentHashMap<Integer, HashMap<Integer, Integer>> pMsgs = new ConcurrentHashMap<Integer, HashMap<Integer, Integer>>();
/**
* @param args
*/
public static void main(String[] args) {
ConcurrencyHashMapTest chmt = new ConcurrencyHashMapTest() ;
<span style="color:#ff0000;">Thread t1 = new Thread(chmt.new Sender(chmt.pMsgs,1)) ; //内部类必须先定义外部类实例后才能定义!
Thread t2 = new Thread(chmt.new Sender(chmt.pMsgs,2)) ;
Thread t3 = new Thread(chmt.new Sender(chmt.pMsgs,2)) ;</span>
t1.start() ;
t2.start() ;
t3.start() ;
try {
RandomAccessFile raf = new RandomAccessFile("F:\\test\\Concurrency.txt", "rw") ;
Thread.currentThread().sleep(1000) ;
for(Map.Entry<Integer, HashMap<Integer, Integer>> partition : chmt.pMsgs.entrySet()){
System.out.println("Partition " + partition.getKey() + " Size: " + partition.getValue().size() +"\n") ;
raf.writeBytes(partition.toString()) ;
}
raf.close() ;
} catch (InterruptedException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
class Sender implements Runnable {
ConcurrentHashMap<Integer, HashMap<Integer, Integer>> pMsgs;
int part = -1 ;
public Sender(ConcurrentHashMap<Integer, HashMap<Integer, Integer>> pMsgs, int partition) {
this.pMsgs = pMsgs;
this.part = partition ;
}
@Override
public void run() {
HashMap<Integer, Integer> partition = new HashMap<Integer, Integer>();
int id = (int) Thread.currentThread().getId() ;
for (int i = 0; i < 10000; i++)
partition.put(i, id);
pMsgs.put(part, partition);
System.out.println("Thread " + id + " Partition " + part + " is inserted! ");
}
}
}
分享到:
相关推荐
内容概要: 这段Java代码的源码资源是一个内部类讲解案例。通过该代码,我们将学习如何在Java中定义和使用内部类。...这些目标将帮助你理解和掌握内部类的概念,并能够在适当的时候使用内部类来解决问题...
Handler对象中使用匿名内部类或非静态内部类正确地释放消息避免内存泄漏或增加Native内存,在Android中,Handler对象通常会被用来在主线程(UI线程)中处理消息,以更新UI界面。当我们在Handler对象中使用匿名内部类...
主要讲述了JAVA中内部类和匿名内部类的相关问题。
java基础第七章内部类与异常类.doc
是个很麻烦,很纠结的问题 内部类基本语法 内部类继承 子类与父类的内部类同名 匿名类 内部接口及接口中的内部类 内部类的类文件 为什么需要内部类--内部类用途
该源码详细介绍了内部类的三种形式,实现方式,以及需要注意的问题等,帮助初学者迅速建立内部类的概念,对于使用场合也做了相关的介绍
Java内部类继承问题的分析
day11_12_局部内部类的final问题
Java 内部类有什么好处?为什么需要内部类?... 真正的原因是这样的,java 中的内部类和接口加在一起,可以的解决常被 C++ 程序员抱怨 java 中存在的一个问题??没有多继承。实际上,C++ 的多继承设计起来很复杂,
java中的内部类是比较难以理解的一个问题,此文档为java内部类学习的文档资料汇集
超经典企业内部诊断问题模板(15个分类极其全面).doc
在java提高篇—–详解内部类中对匿名内部类做了一个简单的介绍,但是内部类还存在很多其他细节问题,所以衍生出这篇博客。在这篇博客中你可以了解到匿名内部类的使用、匿名内部类要注意的事项、如何初始化匿名内部类...
主要对java中的匿名内部类的详细总结,需要的朋友可以参考下
摘要:“内部人控制”并非“内部人控制问题”,不能将其混为一谈。“内部人控制”在美日的产业发展 史、公司治理中都起着积极的作用。内部人控制下的组织创新是价值创造的源泉,外部人控制最终要通 过“内部人”而起...
问题导向内部审计创新与价值提升.pptx
这里需要探讨的是,外部类以及其他类的对象可以如何访问到某个内部类对象,即内部类的可见性问题。 下面是一个示例程序Out.java,其中包含了4个不同访问权限的内部类(private,default,protected,public),...
石颖制造类企业存货内部控制存在的问题及对策论文(1).zip
第 3 章 接口与内部类接口是什么?接口有什么作用?如何使用接口?这些都是本章需要解决的问题。本章将详细地讲述接口的概念,并以实战结合的方式,学习这些抽象概念。
国有企业内部控制问题.docx
定义一个复数类 complex ,它的内部具有两个实例变量:realPart和imagPart,分别代表复数的实部和虚 部,编程实现要求的数学运算。 (1)实现两个复数相加。复数加运算的原则是:复数的实部和虚部分别相加。 (2...