您的位置 首页 知识

java进程等待 java怎么等待时间 java等待通知机制

Java中等待时刻的实现技巧有很多种,下面将介绍几种常用的方式。

? 使用Thread.sleep()技巧

这是最简单的技巧,可以让当前线程暂停执行指定的时刻,下面内容一个示例:

public class WaitTimeExample public static void main(String[] args) try // 让当前线程暂停2秒 Thread.sleep(2000); System.out.println("2秒后执行"); } catch (InterruptedException e) e.printStackTrace(); } }}

? 使用CountDownLatch类

CountDownLatch可以用来协调多个线程的执行,下面内容一个示例:

import java.util.concurrent.CountDownLatch;public class WaitTimeExample public static void main(String[] args) CountDownLatch latch = new CountDownLatch(1); new Thread(() -> try // 模拟耗时操作 Thread.sleep(2000); } catch (InterruptedException e) e.printStackTrace(); } System.out.println("子线程执行完毕"); latch.countDown(); }).start(); try // 等待子线程执行完毕 latch.await(); } catch (InterruptedException e) e.printStackTrace(); } System.out.println("主线程执行完毕"); }}

? 使用CyclicBarrier类

CyclicBarrier可以让一组线程互相等待,直到所有线程都到达某个点后再继续执行,下面内容一个示例:

import java.util.concurrent.CyclicBarrier;public class WaitTimeExample public static void main(String[] args) CyclicBarrier barrier = new CyclicBarrier(2, () -> System.out.println("所有线程到达屏障"); }); new Thread(() -> try // 模拟耗时操作 Thread.sleep(2000); } catch (InterruptedException e) e.printStackTrace(); } System.out.println("子线程1执行完毕"); try barrier.await(); } catch (InterruptedException | BrokenBarrierException e) e.printStackTrace(); } }).start(); new Thread(() -> try // 模拟耗时操作 Thread.sleep(2000); } catch (InterruptedException e) e.printStackTrace(); } System.out.println("子线程2执行完毕"); try barrier.await(); } catch (InterruptedException | BrokenBarrierException e) e.printStackTrace(); } }).start(); }}

? 使用Semaphore类

Semaphore可以控制对共享资源的访问,下面内容一个示例:

import java.util.concurrent.Semaphore;public class WaitTimeExample public static void main(String[] args) Semaphore semaphore = new Semaphore(1); new Thread(() -> try // 获取信号量 semaphore.acquire(); // 模拟耗时操作 Thread.sleep(2000); } catch (InterruptedException e) e.printStackTrace(); } finally // 释放信号量 semaphore.release(); } System.out.println("线程执行完毕"); }).start(); }}

就是Java中等待时刻的几种实现技巧,可以根据实际需求选择合适的技巧,希望对无论兄弟们有所帮助!?


返回顶部