在几秒后执行某方法

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{

        

        

    });


或者

[self performSelector:@selector(done:) withObject:@"addd" afterDelay:3.0f];


可以使用 `ScheduledExecutorService` 来实现在指定时间后执行方法的功能。下面是一个简单的示例: ```java @Component public class MyTask { private final ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(1); public void scheduleTask() { // 延迟 10 秒后执行 long delay = 10L; scheduledExecutorService.schedule(this::doSomething, delay, TimeUnit.SECONDS); } public void doSomething() { // 要执行的任务逻辑 } } ``` 在上面的示例中,我们通过 `ScheduledExecutorService` 的 `schedule` 方法来实现在延迟指定时间后执行方法的功能。`schedule` 方法的第一个参数是一个 `Runnable` 对象,可以使用 lambda 表达式来简化代码。第二个参数是延迟的时间,单位是 `TimeUnit` 类型的枚举,这里我们设置延迟 10 秒后执行。第三个参数是执行时间的时间单位,这里我们使用秒作为单位。 需要注意的是,在使用 `ScheduledExecutorService` 时,需要在程序结束时手动关闭线程池,以避免线程泄漏。可以在 Spring Boot 应用的关闭钩子中添加关闭线程池的逻辑,例如: ```java @Component public class MyShutdownHook implements CommandLineRunner, ApplicationListener<ContextClosedEvent> { @Autowired private MyTask myTask; private ScheduledExecutorService scheduledExecutorService; @Override public void run(String... args) { scheduledExecutorService = myTask.getScheduledExecutorService(); } @Override public void onApplicationEvent(ContextClosedEvent event) { scheduledExecutorService.shutdown(); } } ``` 在上面的示例中,我们实现了 `CommandLineRunner` 和 `ApplicationListener` 接口,并在 `run` 方法中获取了 `MyTask` 中定义的 `ScheduledExecutorService` 对象。在 `onApplicationEvent` 方法中,我们在 Spring Boot 应用关闭时手动关闭了线程池,以避免线程泄漏。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值