首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏云架构修炼手册

    有意思的TimeUnit

    java.util.concurrent.TimeUnit 这个类,相信童鞋们都不陌生。它是一个enum: public enum TimeUnit 好吧,我一直把它当做一个枚举类来用。 偶然看到还有别的用法,大吃一斤,原来 TimeUnit 并不是一个简单的枚举类。 时间单位换算 //小时转换为秒 long sec = TimeUnit.HOURS.toSeconds(1); // 另一种形式 long sec = TimeUnit.SECONDS.convert (1, TimeUnit.HOURS); sleep() 比如,当前线程休眠5秒,传统的方式如下: Thread.sleep(5000); 用TimeUnit看起来是这样的: TimeUnit.SECONDS.sleep 得掰着手指头 —— 看半天,用TimeUnit就清晰多了。 TimeUnit.DAYS.sleep(1);

    66420发布于 2019-11-04
  • 来自专栏明明如月的技术专栏

    通过java.util.concurrent.TimeUnit来学习枚举

    一、背景 今天无意间看到了java.util.concurrent.TimeUnit枚举类。 想通过这个类谈谈枚举,以及编程规范问题。 二、源码 源码: package java.util.concurrent; /** * A {@code TimeUnit} represents time durations at a given * * A {@code TimeUnit} is mainly used to inform time-based methods * how a given timing parameter * * @since 1.5 * @author Doug Lea */ public enum TimeUnit { /** * Time unit representing 另外我们通过源码可以看到,为什么TimeUnit.SECONDS.sleep(10);可以让当前线程暂停10秒呢?

    62230发布于 2021-08-31
  • 来自专栏全栈程序员必看

    ReentrantLock的lock(), tryLock(), tryLock(long timeout, TimeUnit unit), lockInterruptibly() 及使用场景示例

    2.ReentrantLock提供的获取锁的方式 ReentrantLock提供了lock()、tryLock()、tryLock(long timeout, TimeUnit unit)、lock.lockInterruptibly 但是如果就是想使用公平的方式的话,可以试一试tryLock(0, TimeUnit.SECONDS),几乎跟公平锁没区别,只是会监测中断事件。 3)tryLock(long timeout, TimeUnit unit) public boolean tryLock(long timeout, TimeUnit unit) 但是tryLock(long,TimeUnit)在等待超时之后可以结束等待。 TryLockInterrupt-Thread lockTest----current thread release the lock: Lock-Thread 同时,tryLock(long, TimeUnit

    87320编辑于 2022-11-03
  • 来自专栏Java与Android技术栈

    RxJava 之 TestScheduler

    scheduler.advanceTimeTo(10, TimeUnit.MILLISECONDS); 时钟移动到20毫秒。 scheduler.advanceTimeBy(20, TimeUnit.MILLISECONDS); 下面的列子展示了0秒、20秒、40秒会打印不同的结果。 : " + scheduler.now(TimeUnit.MILLISECONDS)); scheduler.advanceTimeTo(20, TimeUnit.SECONDS); (40, TimeUnit.SECONDS); System.out.println("virtual time: " + scheduler.now(TimeUnit.SECONDS) time:" + scheduler.now(TimeUnit.SECONDS)); scheduler.advanceTimeBy(2, TimeUnit.SECONDS);

    96220发布于 2018-08-24
  • 来自专栏码匠的流水账

    聊聊httpclient的evict操作

    maxIdleTimeUnit : TimeUnit.SECONDS, maxIdleTime, maxIdleTimeUnit); } public timeUnit) throws InterruptedException { thread.join((timeUnit ! timeUnit : TimeUnit.MILLISECONDS).toMillis(time)); } static class DefaultThreadFactory implements * @param timeUnit time unit. */ public void closeIdle(final long idletime, final TimeUnit timeUnit) { Args.notNull(timeUnit, "Time unit"); long time = timeUnit.toMillis(idletime

    48630编辑于 2023-10-06
  • 来自专栏三流程序员的挣扎

    RxJava 过滤操作符

    final Observable<T> skipLast(int count) public final Observable<T> skipLast(long time, TimeUnit unit <T> skipLast(long time, TimeUnit unit, Scheduler scheduler) public final Observable<T> skipLast(long unit) public final Observable<T> take(long time, TimeUnit unit, Scheduler scheduler) // 反方向 public unit) public final Observable<T> takeLast(long time, TimeUnit unit, boolean delayError) public final (1, 20, 0,100, TimeUnit.MILLISECONDS) .sample(300, TimeUnit.MILLISECONDS).subscribe

    1.9K10发布于 2018-09-11
  • 来自专栏码匠的流水账

    聊聊jetcache的MultiLevelCache

    timeUnit); default void put(K key, V value, long expireAfterWrite, TimeUnit timeUnit) { ); } CacheResult PUT(K key, V value, long expireAfterWrite, TimeUnit timeUnit); default extends V> map, long expireAfterWrite, TimeUnit timeUnit) { PUT_ALL(map, expireAfterWrite, timeUnit extends V> map, long expireAfterWrite, TimeUnit timeUnit) { long t = System.currentTimeMillis timeUnit) { CacheValueHolder<V> cacheObject = new CacheValueHolder(value ,timeUnit.toMillis(

    21310编辑于 2024-06-19
  • 来自专栏码匠的流水账

    聊聊jetcache的MultiLevelCache

    timeUnit); default void put(K key, V value, long expireAfterWrite, TimeUnit timeUnit) { PUT ); } CacheResult PUT(K key, V value, long expireAfterWrite, TimeUnit timeUnit); default void extends V> map, long expireAfterWrite, TimeUnit timeUnit) { PUT_ALL(map, expireAfterWrite, timeUnit extends V> map, long expireAfterWrite, TimeUnit timeUnit); CacheResult REMOVE(K key); CacheResult extends V> map, long expireAfterWrite, TimeUnit timeUnit) { long t = System.currentTimeMillis(

    23110编辑于 2024-06-18
  • 来自专栏码匠的流水账

    聊聊httpclient的evict操作

    maxIdleTimeUnit : TimeUnit.SECONDS, maxIdleTime, maxIdleTimeUnit); } public void timeUnit) throws InterruptedException { thread.join((timeUnit ! timeUnit : TimeUnit.MILLISECONDS).toMillis(time)); } static class DefaultThreadFactory implements * @param timeUnit time unit. */ public void closeIdle(final long idletime, final TimeUnit timeUnit) { Args.notNull(timeUnit, "Time unit"); long time = timeUnit.toMillis(idletime

    78340编辑于 2023-10-06
  • 来自专栏码匠的流水账

    springboot配置okhttp3

    OkHttpClient.Builder builder = new OkHttpClient.Builder(); builder.connectTimeout(30, TimeUnit.SECONDS ) .readTimeout(30, TimeUnit.SECONDS) .writeTimeout(30,TimeUnit.SECONDS OkHttpClient.Builder builder = new OkHttpClient.Builder(); builder.connectTimeout(30, TimeUnit.SECONDS ) .readTimeout(30, TimeUnit.SECONDS) .writeTimeout(30,TimeUnit.SECONDS ) .readTimeout(30, TimeUnit.SECONDS) .writeTimeout(30,TimeUnit.SECONDS

    2.5K20发布于 2018-09-17
  • 来自专栏全栈程序员必看

    基准测试框架JMH使用详解

    = TimeUnit.SECONDS) @Measurement(iterations = 5, time = 1, timeUnit = TimeUnit.SECONDS) @Test = 5, time = 1, timeUnit = TimeUnit.SECONDS) @Measurement(iterations = 5, time = 1, timeUnit = TimeUnit.SECONDS = 5, time = 1, timeUnit = TimeUnit.SECONDS) @Measurement(iterations = 5, time = 1, timeUnit = TimeUnit.SECONDS (iterations = 5, time = 1, timeUnit = TimeUnit.SECONDS) @Measurement(iterations = 5, time = 1, timeUnit = 5, time = 1, timeUnit = TimeUnit.SECONDS) @Measurement(iterations = 5, time = 1, timeUnit = TimeUnit.SECONDS

    1.1K50编辑于 2022-09-14
  • 来自专栏MyBlog-Karos

    针对RedisTemplate实现WatchDog

    timeUnit) throws KaToolException { if (ObjectUtil.isEmpty(obj)){ )){ timeUnit=lockConfig.getTimeUnit(); } //线程被锁住了 ); log.info("katool=> LockUntil => DistributedLock:{} value:{} extime:{} timeUnit:{}" finalTimeUnit = timeUnit; Long finalExptime = exptime; ); log.info("katool=> LockUntil => delayDistributedLock:{} value:{} extime:{} timeUnit

    81021编辑于 2023-04-24
  • 来自专栏全栈学习之路

    缓存穿透、雪崩、击穿实践

    stringRedisTemplate.opsForValue().set(key, JSONUtil.toJsonStr(shop), RedisConstants.CACHE_SHOP_TTL, TimeUnit.MINUTES timeUnit){ stringRedisTemplate.opsForValue().set(key, JSONUtil.toJsonStr(value), time, timeUnit } /** * 逻辑过期时间 * @param key * @param value * @param time * @param timeUnit */ public void setWithLogicalExpire(String key, Object value, Long time, TimeUnit timeUnit) ); return null; } //写入缓存 设置超时时间为30min this.set(key, r, time, timeUnit

    35210编辑于 2023-07-12
  • 来自专栏码匠的流水账

    聊聊artemis的CriticalAnalyzerPolicy

    unit); long getCheckTimeNanoSeconds(); CriticalAnalyzer setTimeout(long timeout, TimeUnit unit ); long getTimeout(TimeUnit unit); long getTimeoutNanoSeconds(); CriticalAnalyzer addAction unit) { return this; } @Override public long getTimeout(TimeUnit unit) { return unit) { if (timeoutNanoSeconds == 0) { timeoutNanoSeconds = TimeUnit.MINUTES.toNanos( 2); } return unit.convert(timeoutNanoSeconds, TimeUnit.NANOSECONDS); } @Override

    35120发布于 2020-02-24
  • 来自专栏求道

    求求你,别再开发的时候一用redis分布式锁,就急着去复制粘贴了!lua脚本的实现思路

    timeUnit, long time); /** * 上锁 * @param lockName 锁名称 * @param lockValue 锁值 * @param timeUnit 时间单位 * @param time 时间 */ void lock(String lockName, String lockValue, TimeUnit timeUnit, long time); /** * 线程解锁 * @param lockName 即将解锁的锁名称 */ void timeUnit, long time) { Jedis jedis = pool.getResource timeUnit, long time) { if (tryLock(lockName,lockValue,timeUnit,time)) { return;

    71630发布于 2020-09-15
  • 来自专栏用户10004205的专栏

    如何实现一个定时器

    Timer: using System; using UnityEngine; ///

    /// 时间单位 /// public enum TimeUnit { ">时间单位</param> /// <param name="loop">是否循环</param> public Timer(float duration, TimeUnit timeUnit = TimeUnit.SECOND , bool loop = false) { switch (timeUnit) { case TimeUnit.MILLSECOND: this.duration = duration / 1000; break; case TimeUnit.SECOND: this.duration = duration; break; case TimeUnit.MINUTE : this.duration = duration * 60; break; case TimeUnit.HOUR: this.duration = duration

    39710编辑于 2022-08-29
  • 来自专栏技术分享

    实战抽象工厂模式

    timeUnit) { logger.info("Redis写入数据 key:{} val:{} timeout:{} timeUnit:{}", key, value, timeout timeUnit) { logger.info("IIR写入数据 key:{} val:{} timeout:{} timeUnit:{}", key, value, timeout, timeUnit) { logger.info("EGM写入数据 key:{} val:{} timeout:{} timeUnit:{}", key, value, timeout, timeUnit) { egm.setEx(key, value, timeout, timeUnit); } public void del(String key) timeUnit) { iir.setExpire(key, value, timeout, timeUnit); } public void del(String

    21210编辑于 2024-05-31
  • 来自专栏MyBlog-Karos

    重新说说Redis实现分布式公平可重入锁的实现,这次具体说说异步唤醒机制,这次带上QPS检测

    timeUnit,String[] hashkey){ long id = Thread.currentThread().getId(); > submitTask(Runnable run, long delay, TimeUnit timeUnit){ ScheduledFuture<? > submitTask(Callable run, long delay, TimeUnit timeUnit){ ScheduledFuture<? > submitTask(Runnable run,long initdeay, long delay, TimeUnit timeUnit){ ScheduledFuture<? > submitTask(Callable run,long initdeay, long delay, TimeUnit timeUnit){ ScheduledFuture<?

    1.1K110编辑于 2023-09-13
  • SpringBoot 整合 Mini

    @param bucketName 存储桶名称 * @param objectName 对象名称 * @param getUrlTime 访问文件路径时间 * @param timeUnit String getUrlByBucketNameAndObjectNameAndTime(String bucketName, String objectName, int getUrlTime, TimeUnit timeUnit); /** * 根据对象名称和桶名称删除对象 * * @param bucketName 桶名称 * @param objectName 对象名称 timeUnit) { return this.getUrl(bucketName, objectName, getUrlTime, timeUnit); } @Override timeUnit) { try { return minioClient.getPresignedObjectUrl(

    34310编辑于 2024-10-28
  • 来自专栏nobody

    Java避坑指南:多线程批量调用下游接口,如何正确设置总超时时间

    JdkDemo { private static final ThreadPoolExecutor poolExecutor = new ThreadPoolExecutor(10, 100, 100, TimeUnit.SECONDS (Future<Integer> integerFuture : futures) { try { integerFuture.get(15, TimeUnit.SECONDS java.util.concurrent.Future#get(long, java.util.concurrent.TimeUnit)方法是对每个任务的超时时间设置,而不是对总任务设置超时时间。 线程池invokeAll的原理其实是动态改动了java.util.concurrent.Future#get(long, java.util.concurrent.TimeUnit)设置的超时时间,每次都会设置为 :任务截止时间减去当前时间,如下图源码所示: 正确做法:使用CompletableFuture 使用CompletableFuture.allOf(......).get(15L, TimeUnit.SECONDS

    1K10编辑于 2024-09-13
领券