ZooKeeper_6_Java操作ZK_删除节点

来源:互联网 发布:medline数据库网址 编辑:程序博客网 时间:2024/06/02 19:42

删除节点


同步删除节点

void org.apache.zookeeper.ZooKeeper.delete(String path, int version)


异步删除节点

void org.apache.zookeeper.ZooKeeper.delete(String path, int version, VoidCallback cb, Object ctx)


参数说明:

path

执行数据节点的节点路径

version

指定节点的版本数据,表明本次删除是针对该数据版本进行的

cb

注册一个异步回调函数

ctx

用于传递上下文信息的对象



同步删除节点Demo

public class TestDelete implements Watcher {// 屏障,计数器private static CountDownLatch downLatch = new CountDownLatch(1);public static void main(String[] args) throws Exception {ZooKeeper zookeeper = new ZooKeeper("10.0.227.66:2181", 5000, new TestDelete());System.out.println("zookeeper.getState()1 : " + zookeeper.getState());try {downLatch.await();// 在计数器未归零之前,所有线程等待} catch (Exception e) {e.printStackTrace();}System.out.println("zookeeper.getState()2 : " + zookeeper.getState());zookeeper.delete("/cyx", -1);System.out.println("删除完成");}@Overridepublic void process(WatchedEvent event) {System.out.println("receive watched event : " + event);if (KeeperState.SyncConnected == event.getState()) {downLatch.countDown();// 计数器-1}}}输出结果:zookeeper.getState()1 : CONNECTINGreceive watched event : WatchedEvent state:SyncConnected type:None path:nullzookeeper.getState()2 : CONNECTED删除完成
这里就不贴ZooKeeper服务端的结果了..反正就是删掉了..



异步删除节点:

public class TestDelete implements Watcher {// 屏障,计数器private static CountDownLatch downLatch = new CountDownLatch(1);public static void main(String[] args) throws Exception {ZooKeeper zookeeper = new ZooKeeper("10.0.227.66:2181", 5000, new TestDelete());System.out.println("zookeeper.getState()1 : " + zookeeper.getState());try {downLatch.await();// 在计数器未归零之前,所有线程等待} catch (Exception e) {e.printStackTrace();}System.out.println("zookeeper.getState()2 : " + zookeeper.getState());zookeeper.delete("/cyx", -1, new myCallBack(), "123");System.out.println("删除完成");Thread.sleep(Integer.MAX_VALUE);}static class myCallBack implements VoidCallback {@Overridepublic void processResult(int arg0, String arg1, Object arg2) {System.out.println(arg0);System.out.println(arg1);System.out.println(arg2);}}@Overridepublic void process(WatchedEvent event) {System.out.println("receive watched event : " + event);if (KeeperState.SyncConnected == event.getState()) {downLatch.countDown();// 计数器-1}}}输出结果:zookeeper.getState()1 : CONNECTINGreceive watched event : WatchedEvent state:SyncConnected type:None path:nullzookeeper.getState()2 : CONNECTED删除完成0/cyx123

这个回调和上面创建节点的使用方式差不多耶...

不多说了...

自己体会....


原创粉丝点击