Periodic

Cassandra最佳实践(3)配置篇

£可爱£侵袭症+ 提交于 2020-03-25 09:14:26
3 月,跳不动了?>>> 本篇文章我们主要介绍cassandra的相关配置,我把cassandra的相关配置中个人觉得相对比较重要的按照集群、节点这个横向维度进行介绍,可能有的配置我不会列在这里,那么具有见cassandra.yaml里面的详细介绍;如何配置cassandra,需要在集群启动的时候在conf目录下面的cassandra.yaml里面进行配置即可。此外我们的配置需要遵守yaml文件配置规则。本处以3.11.4进行介绍 集群维度 cluster_name: //集群的名字,默认是Test Cluster,用''括起来。不同的cluster name的节点无法组成一个集群 num_tokens: 256 //集群中单节点的的分配token数,因为使用vnode,也就是vnode的个数,每个token是随机生成的,此外如果不使用vnode的话,可以使用每个节点预分配一个初始的token,通过下面的配置下; initial_token: //如果集群不想使用vnode的话,需要手工给每个节点进行token配置,手工计算节点的token数,但是扩容的时候建议是成倍扩容。vnode不需要 partitioner: //集群的数据分配算法,也就是常见的一致性hash算法中计算hash的那个模块,其中默认使用org.apache.cassandra.dht

周期性线程池与主要源码解析

扶醉桌前 提交于 2019-11-28 23:57:01
之前学习ThreadPool的使用以及源码剖析,并且从面试的角度去介绍知识点的解答。今天小强带来周期性线程池的使用和重点源码剖析。 ScheduledThreadPoolExecutor ScheduledThreadPoolExecutor:用来处理延时任务或定时任务 定时线程池类的类结构图 ScheduledThreadPoolExecutor接收ScheduleFutureTask类型的任务,是线程池调度任务的最小单位。 它采用DelayQueue存储等待的任务: 1、DelayQueue内部封装成一个PriorityQueue,它会根据time的先后时间顺序,如果time相同则根绝sequenceNumber排序; 2、DelayQueue是无界队列; ScheduleFutureTask 接收的参数: private final long sequenceNumber;//任务的序号 private long time;//任务开始的时间 private final long period;//任务执行的时间间隔 工作线程的的执行过程: 工作线程会从DelayQueue取出已经到期的任务去执行; 执行结束后重新设置任务的到期时间,再次放回DelayQueue; ScheduledThreadPoolExecutor会把待执行的任务放到工作队列DelayQueue中

死磕 java线程系列之线程池深入解析——定时任务执行流程

眉间皱痕 提交于 2019-11-27 16:06:23
(手机横屏看源码更方便) 注:java源码分析部分如无特殊说明均基于 java8 版本。 注:本文基于ScheduledThreadPoolExecutor定时线程池类。 简介 前面我们一起学习了普通任务、未来任务的执行流程,今天我们再来学习一种新的任务——定时任务。 定时任务是我们经常会用到的一种任务,它表示在未来某个时刻执行,或者未来按照某种规则重复执行的任务。 问题 (1)如何保证任务是在未来某个时刻才被执行? (2)如何保证任务按照某种规则重复执行? 来个栗子 创建一个定时线程池,用它来跑四种不同的定时任务。 public class ThreadPoolTest03 { public static void main(String[] args) throws ExecutionException, InterruptedException { // 创建一个定时线程池 ScheduledThreadPoolExecutor scheduledThreadPoolExecutor = new ScheduledThreadPoolExecutor(5); System.out.println("start: " + System.currentTimeMillis()); // 执行一个无返回值任务,5秒后执行,只执行一次