电商网站建设培训班,wordpress 显示ip,自己做的网站根目录哪里找到,开发公司仓库管理工作流程作用#xff1a;RBucket桶可存储任意对象#xff0c;可在高并发场景下进行唯一更新。
示例#xff1a;创建20个线程并发更新桶对象#xff0c;只有一个执行了更新操作。
先添加redisson的依赖。
dependencygroupIdorg.redisson/groupIdarti…作用RBucket桶可存储任意对象可在高并发场景下进行唯一更新。
示例创建20个线程并发更新桶对象只有一个执行了更新操作。
先添加redisson的依赖。
dependencygroupIdorg.redisson/groupIdartifactIdredisson/artifactIdversion3.20.0/version
/dependency
public static void main(String[] args) {Config config new Config();config.useSingleServer().setAddress(redis://localhost:6379).setPassword(123456);RedissonClient client Redisson.create(config);RCountDownLatch countDownLatch client.getCountDownLatch(countDownLatch);countDownLatch.trySetCount(20);RBucketString bucket client.getBucket(bucket);bucket.set(桶测试1);String oldValuebucket.get();ExecutorService executorService Executors.newFixedThreadPool(20);for (int i0;i20;i){executorService.submit(() - {System.out.println(线程: Thread.currentThread().getId() ,桶: bucket.get());if (bucket.compareAndSet(oldValue, 桶测试 2)) {System.out.println(线程 Thread.currentThread().getId() 更新了bucket的值);}countDownLatch.countDown();});}try {countDownLatch.await();}catch (Exception e){e.printStackTrace();}System.out.println(更新后的桶对象为bucket.get());executorService.shutdown();
}
接口文档
public interface RBucketV extends RExpirable, RBucketAsyncV {void set(V var1); //设置桶存储的对象void set(V var1, long var2, TimeUnit var4); //设置桶存储的对象设置操作的超时时间var2boolean trySet(V var1); //尝试设置桶的新值boolean trySet(V var1, long var2, TimeUnit var4); //尝试设置桶的新值设置超时时间var2boolean compareAndSet(V var1, V var2); //原子替换桶的新值为var2long size(); //桶存储对象的大小V get(); //返回桶存储的对象V getAndDelete(); //返回并删除桶存储的对象V getAndSet(V var1); //返回桶的旧值设置新值V getAndSet(V var1, long var2, TimeUnit var4); //返回桶的旧值设置新值设置操作的超时时间var2}