TimeUnit


TimeUnit là một enum trong Java thuộc gói java.util.concurrent, được sử dụng để định nghĩa các đơn vị thời gian và cung cấp các phương thức tiện ích để chuyển đổi giữa các đơn vị thời gian khác nhau. Dưới đây là một số thông tin chi tiết về TimeUnit:

Các Giá Trị Enum của TimeUnit

TimeUnit bao gồm các giá trị sau, biểu diễn các đơn vị thời gian khác nhau:

  • NANOSECONDS: Nanosecond (1/1,000,000,000 của giây)

  • MICROSECONDS: Microsecond (1/1,000,000 của giây)

  • MILLISECONDS: Millisecond (1/1,000 của giây)

  • SECONDS: Second (giây)

  • MINUTES: Minute (phút)

  • HOURS: Hour (giờ)

  • DAYS: Day (ngày)

Các Phương Thức Chính của TimeUnit

  1. convert(long sourceDuration, TimeUnit sourceUnit):

    • Chuyển đổi một khoảng thời gian từ một đơn vị này sang một đơn vị khác.

    • Ví dụ:

long minutes = TimeUnit.HOURS.convert(2, TimeUnit.DAYS); // 48 hours

toNanos(long duration):

  • Chuyển đổi một khoảng thời gian sang nanoseconds.

long nanos = TimeUnit.SECONDS.toNanos(1); // 1 second = 1,000,000,000 nanoseconds

Sử Dụng TimeUnit trong Thread Sleep hoặc Await

TimeUnit cũng có thể được sử dụng để làm cho thread ngủ hoặc chờ trong một khoảng thời gian cụ thể:sleep(long timeout): Làm thread ngủ trong một khoảng thời gian được chỉ định.

TimeUnit.SECONDS.sleep(1); // Thread ngủ trong 1 giây

awaitNanos(long nanosTimeout): Dùng trong các cơ chế đồng bộ để chờ một khoảng thời gian.

LockSupport.parkNanos(TimeUnit.MILLISECONDS.toNanos(500)); // Chờ 500 milliseconds

Ví dụ:

import java.util.concurrent.TimeUnit;

public class TimeUnitExample {
    public static void main(String[] args) {
        long hours = TimeUnit.DAYS.toHours(1);
        System.out.println("1 ngày có " + hours + " giờ");

        long millis = TimeUnit.SECONDS.toMillis(10);
        System.out.println("10 giây có " + millis + " milliseconds");

        try {
            System.out.println("Ngủ trong 2 giây...");
            TimeUnit.SECONDS.sleep(2);
            System.out.println("Dậy rồi!");
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

TimeUnit giúp cho việc xử lý thời gian trong các ứng dụng Java trở nên dễ dàng và ngắn gọn hơn, đặc biệt là trong lập trình đa luồng và các tác vụ cần quản lý thời gian.

Last updated