Thread sleep trong Java: Cách tạm dừng luồng và những điều cần biết
2 phút đọc03/08/2025
Bao Tran
Web Developer
0 lượt xem
0 lượt xem
Reading Time: 2minutes
Giới thiệu về Thread sleep trong Java
Phương thức Thread.sleep() trong Java được dùng để tạm dừng thực thi của thread (luồng) hiện tại trong một khoảng thời gian được chỉ định bằng mili giây. Giá trị đối số cho mili giây không được âm, nếu không, ngoại lệ IllegalArgumentException sẽ được sinh ra.
sleep(long millis, int nanos) là một phương thức khác có thể dùng để tạm dừng thực thi của luồng hiện tại trong một số mili giây và nano giây được chỉ định. Các giá trị nano giây cho phép nằm trong khoảng từ 0 đến 999999.
Trong bài viết này, bạn sẽ tìm hiểu về Thread.sleep() của Java.
Cách hoạt động của Thread.sleep()
Thread.sleep() tương tác với thread scheduler để đưa thread hiện tại vào trạng thái chờ trong một khoảng thời gian xác định. Khi thời gian chờ kết thúc, trạng thái của thread được chuyển thành trạng thái runnable state và chờ CPU để tiếp tục thực thi. Thời gian thực tế mà thread hiện tại ngủ phụ thuộc vào thread scheduler, vốn là một phần của hệ điều hành.
Các điểm quan trọng của Thread sleep trong Java
Nó luôn tạm dừng việc thực thi của thread hiện tại.
Thời gian thực tế thread dừng thực thi và trở lại trạng thái sẵn sàng và bắt đầu thực thi phụ thuộc vào system timers và schedulers. Đối với một hệ thống ít bận rộn, thời gian thực tế cho giấc ngủ gần với thời gian đã chỉ định, nhưng đối với một hệ thống bận rộn, nó sẽ lâu hơn một chút.
Thread.sleep() không làm mất bất kỳ monitor (trình giám sát) hoặc lock (khóa) nào mà thread hiện tại đã có được.
Bất kỳ thread nào khác có thể gián đoạn thread hiện tại khi đang ngủ, và trong những trường hợp như vậy InterruptedException sẽ được ném ra.
Ví dụ vềThread sleep trong Java
Dưới đây là một chương trình ví dụ trong đó Thread.sleep() được sử dụng để tạm dừng việc thực thi của main thread trong 2 giây (2000 mili giây):
package com.journaldev.threads;
public class ThreadSleep {
public static void main(String[] args) throws InterruptedException {
long start = System.currentTimeMillis();
Thread.sleep(2000);
System.out.println("Sleep time in ms = " + (System.currentTimeMillis() - start));
}
}
Đầu tiên, đoạn code này lưu trữ system time hiện tại theo mili giây. Sau đó, nó dừng lại trong 2000 mili giây. Cuối cùng, đoạn code này in ra system time hiện tại mới trừ đi system time hiện tại trước đó:
Output
Sleep time in ms = 2005
Hãy chú ý rằng sự khác biệt này không chính xác là 2000 mili giây. Điều này là do cách Thread.sleep() hoạt động và việc triển khai thread scheduler phụ thuộc vào hệ điều hành.
Kết luận
Trong bài viết này, bạn đã tìm hiểu vềThread sleep trong Java.
Về tác giả
Bao TranWeb Developer
I’m passionate about web development and sharing my insights through articles, with over 8 years of experience. I hope these sharings inspire you and help build a strong web development community.
@#@
Tôi đam mê phát triển web và chia sẻ những hiểu biết của mình thông qua các bài viết, với hơn 8 năm kinh nghiệm. Tôi hy vọng những chia sẻ này sẽ truyền cảm hứng cho các bạn và giúp xây dựng một cộng đồng phát triển web mạnh mẽ.
Cập nhật thông tin mới nhấtNhận các thông tin mới nhất về mối đe dọa, báo cáo an ninh mạng từ CyStack về hòm thư điện tử của bạn
Thảo luận (0)
Đăng nhập để thảo luận
Bài viết liên quan
{"success":true,"head":"<title>Thread sleep trong Java: Cách tạm dừng luồng và những điều cần biết - CyStack Tutorial</title>\n<meta name=\"description\" content=\"Tìm hiểu cách sử dụng phương thức Thread sleep trong Java để tạm dừng luồng hiện tại. Bài viết giải thích chi tiết cách hoạt động, ví dụ minh họa và những lưu ý quan trọng về Thread.sleep().\"/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-video-preview:-1, max-image-preview:large\"/>\n<link rel=\"canonical\" href=\"https://blog.cystack.org/tutorial/2025/08/03/thread-sleep-trong-java/\" />\n<meta property=\"og:locale\" content=\"en_US\" />\n<meta property=\"og:type\" content=\"article\" />\n<meta property=\"og:title\" content=\"Thread sleep trong Java: Cách tạm dừng luồng và những điều cần biết - CyStack Tutorial\" />\n<meta property=\"og:description\" content=\"Tìm hiểu cách sử dụng phương thức Thread sleep trong Java để tạm dừng luồng hiện tại. Bài viết giải thích chi tiết cách hoạt động, ví dụ minh họa và những lưu ý quan trọng về Thread.sleep().\" />\n<meta property=\"og:url\" content=\"https://blog.cystack.org/tutorial/2025/08/03/thread-sleep-trong-java/\" />\n<meta property=\"og:site_name\" content=\"CyStack Tutorial\" />\n<meta property=\"article:tag\" content=\"vi\" />\n<meta property=\"article:section\" content=\"Java\" />\n<meta property=\"og:updated_time\" content=\"2025-08-04T22:33:19+07:00\" />\n<meta property=\"og:image\" content=\"https://s2.cystack.net/tutorial/03170011/Thread-sleep-trong-Java.jpg\" />\n<meta property=\"og:image:secure_url\" content=\"https://s2.cystack.net/tutorial/03170011/Thread-sleep-trong-Java.jpg\" />\n<meta property=\"og:image:width\" content=\"1200\" />\n<meta property=\"og:image:height\" content=\"630\" />\n<meta property=\"og:image:alt\" content=\"Thread sleep trong Java\" />\n<meta property=\"og:image:type\" content=\"image/jpeg\" />\n<meta property=\"article:published_time\" content=\"2025-08-03T17:02:30+07:00\" />\n<meta property=\"article:modified_time\" content=\"2025-08-04T22:33:19+07:00\" />\n<meta name=\"twitter:card\" content=\"summary_large_image\" />\n<meta name=\"twitter:title\" content=\"Thread sleep trong Java: Cách tạm dừng luồng và những điều cần biết - CyStack Tutorial\" />\n<meta name=\"twitter:description\" content=\"Tìm hiểu cách sử dụng phương thức Thread sleep trong Java để tạm dừng luồng hiện tại. Bài viết giải thích chi tiết cách hoạt động, ví dụ minh họa và những lưu ý quan trọng về Thread.sleep().\" />\n<meta name=\"twitter:image\" content=\"https://s2.cystack.net/tutorial/03170011/Thread-sleep-trong-Java.jpg\" />\n<meta name=\"twitter:label1\" content=\"Written by\" />\n<meta name=\"twitter:data1\" content=\"Bao Tran\" />\n<meta name=\"twitter:label2\" content=\"Time to read\" />\n<meta name=\"twitter:data2\" content=\"2 minutes\" />\n<script type=\"application/ld+json\" class=\"rank-math-schema\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https://blog.cystack.org/tutorial/#person\",\"name\":\"CyStack Tutorial\"},{\"@type\":\"WebSite\",\"@id\":\"https://blog.cystack.org/tutorial/#website\",\"url\":\"https://blog.cystack.org/tutorial\",\"name\":\"CyStack Tutorial\",\"publisher\":{\"@id\":\"https://blog.cystack.org/tutorial/#person\"},\"inLanguage\":\"en-US\"},{\"@type\":\"ImageObject\",\"@id\":\"https://s2.cystack.net/tutorial/03170011/Thread-sleep-trong-Java.jpg\",\"url\":\"https://s2.cystack.net/tutorial/03170011/Thread-sleep-trong-Java.jpg\",\"width\":\"1200\",\"height\":\"630\",\"caption\":\"Thread sleep trong Java\",\"inLanguage\":\"en-US\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://blog.cystack.org/tutorial/2025/08/03/thread-sleep-trong-java/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":\"1\",\"item\":{\"@id\":\"https://blog.cystack.org/tutorial\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"position\":\"2\",\"item\":{\"@id\":\"https://blog.cystack.org/tutorial/category/java/\",\"name\":\"Java\"}},{\"@type\":\"ListItem\",\"position\":\"3\",\"item\":{\"@id\":\"https://blog.cystack.org/tutorial/2025/08/03/thread-sleep-trong-java/\",\"name\":\"Thread sleep trong Java: C\\u00e1ch t\\u1ea1m d\\u1eebng lu\\u1ed3ng v\\u00e0 nh\\u1eefng \\u0111i\\u1ec1u c\\u1ea7n bi\\u1ebft\"}}]},{\"@type\":\"WebPage\",\"@id\":\"https://blog.cystack.org/tutorial/2025/08/03/thread-sleep-trong-java/#webpage\",\"url\":\"https://blog.cystack.org/tutorial/2025/08/03/thread-sleep-trong-java/\",\"name\":\"Thread sleep trong Java: C\\u00e1ch t\\u1ea1m d\\u1eebng lu\\u1ed3ng v\\u00e0 nh\\u1eefng \\u0111i\\u1ec1u c\\u1ea7n bi\\u1ebft - CyStack Tutorial\",\"datePublished\":\"2025-08-03T17:02:30+07:00\",\"dateModified\":\"2025-08-04T22:33:19+07:00\",\"isPartOf\":{\"@id\":\"https://blog.cystack.org/tutorial/#website\"},\"primaryImageOfPage\":{\"@id\":\"https://s2.cystack.net/tutorial/03170011/Thread-sleep-trong-Java.jpg\"},\"inLanguage\":\"en-US\",\"breadcrumb\":{\"@id\":\"https://blog.cystack.org/tutorial/2025/08/03/thread-sleep-trong-java/#breadcrumb\"}},{\"@type\":\"Person\",\"@id\":\"https://blog.cystack.org/tutorial/author/baotran/\",\"name\":\"Bao Tran\",\"url\":\"https://blog.cystack.org/tutorial/author/baotran/\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https://secure.gravatar.com/avatar/0cdd33c02ec4a531fcf557b9c1ccc276df0c69031b2382c959bcf335248e840c?s=96&d=mm&r=g\",\"url\":\"https://secure.gravatar.com/avatar/0cdd33c02ec4a531fcf557b9c1ccc276df0c69031b2382c959bcf335248e840c?s=96&d=mm&r=g\",\"caption\":\"Bao Tran\",\"inLanguage\":\"en-US\"}},{\"@type\":\"BlogPosting\",\"headline\":\"Thread sleep trong Java: C\\u00e1ch t\\u1ea1m d\\u1eebng lu\\u1ed3ng v\\u00e0 nh\\u1eefng \\u0111i\\u1ec1u c\\u1ea7n bi\\u1ebft - CyStack Tutorial\",\"keywords\":\"Thread sleep trong Java,thread sleep,java thread sleep\",\"datePublished\":\"2025-08-03T17:02:30+07:00\",\"dateModified\":\"2025-08-04T22:33:19+07:00\",\"articleSection\":\"Java\",\"author\":{\"@id\":\"https://blog.cystack.org/tutorial/author/baotran/\",\"name\":\"Bao Tran\"},\"publisher\":{\"@id\":\"https://blog.cystack.org/tutorial/#person\"},\"description\":\"T\\u00ecm hi\\u1ec3u c\\u00e1ch s\\u1eed d\\u1ee5ng ph\\u01b0\\u01a1ng th\\u1ee9c Thread sleep trong Java \\u0111\\u1ec3 t\\u1ea1m d\\u1eebng lu\\u1ed3ng hi\\u1ec7n t\\u1ea1i. B\\u00e0i vi\\u1ebft gi\\u1ea3i th\\u00edch chi ti\\u1ebft c\\u00e1ch ho\\u1ea1t \\u0111\\u1ed9ng, v\\u00ed d\\u1ee5 minh h\\u1ecda v\\u00e0 nh\\u1eefng l\\u01b0u \\u00fd quan tr\\u1ecdng v\\u1ec1 Thread.sleep().\",\"name\":\"Thread sleep trong Java: C\\u00e1ch t\\u1ea1m d\\u1eebng lu\\u1ed3ng v\\u00e0 nh\\u1eefng \\u0111i\\u1ec1u c\\u1ea7n bi\\u1ebft - CyStack Tutorial\",\"@id\":\"https://blog.cystack.org/tutorial/2025/08/03/thread-sleep-trong-java/#richSnippet\",\"isPartOf\":{\"@id\":\"https://blog.cystack.org/tutorial/2025/08/03/thread-sleep-trong-java/#webpage\"},\"image\":{\"@id\":\"https://s2.cystack.net/tutorial/03170011/Thread-sleep-trong-Java.jpg\"},\"inLanguage\":\"en-US\",\"mainEntityOfPage\":{\"@id\":\"https://blog.cystack.org/tutorial/2025/08/03/thread-sleep-trong-java/#webpage\"}}]}</script>\n"}