本文介绍hazelcast中Queue、MultiMap、Set、List的使用。
Queue的使用
首先是一个简单的例子,生产者-消费者模式。
Producer代码
Consumer代码
启动一个生产者会以1秒1个的速度放入队列数据,最后放入-1。
消费者会每5秒消费一个队列数据,如果取得的数据为-1,则停止。停止前再次放入一个-1。
这样可以启动多个消费者共同消费同一个队列,当消费完毕后同时停止。并且由于都是在同一个机器执行,hazelcast自身会组成一个集群,所以queue消息共享。
MultiMap的使用
MultiMap提供了一种可以在一个key值中存储多个val值的存储结构。
有趣的一点是其移除一个元素,是需要指定key和val的,否则则把该key所有对应val都移除了。
MultiMap示例代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| package com.roytrack.hazelcast.distributed.data.structure.multimap;
import com.hazelcast.core.Hazelcast; import com.hazelcast.core.HazelcastInstance; import com.hazelcast.core.MultiMap;
import java.util.Collection;
public class MultiMapDemo { public static void main(String[] args) { HazelcastInstance hazelcastInstance = Hazelcast.newHazelcastInstance(); MultiMap<String, String> map = hazelcastInstance.getMultiMap("map"); map.put("a", "0"); map.put("a", "1"); map.put("a", "2"); map.put("b", "3"); System.out.println("PutMember:Done");
for (String key : map.keySet()) { Collection<String> values = map.get(key); System.out.printf("%s -> %s\n", key, values); } map.remove("a", "0"); System.out.println("------------------------------"); for (String key : map.keySet()) { Collection<String> values = map.get(key); System.out.printf("%s -> %s\n", key, values); }
map.remove("a"); System.out.println("------------------------------"); for (String key : map.keySet()) { Collection<String> values = map.get(key); System.out.printf("%s -> %s\n", key, values); }
} }
|
运行结果:

Set、List的使用
Set和List都实现了JDK的标准接口,这里就只放出使用示例代码吧。
SetDemo代码
ListDemo代码
总结
通过对hazelcast四种分布式对象的示例代码,可以看出hazelcast为了减少学习负担,大部分结构提供了与JDK一致的方法,这一点比较容易被新手锁接受。