คู่มือ Java ฉบับทันสมัย (อัปเดตล่าสุดปี 2025) บทนำ Java ยังคงเป็นภาษายอดนิยมที่ได้รับความนิยมอย่างต่อเนื่องตั้งแต่ยุค 1990 จนถึงปัจจุบัน ในปี 2025 Java ได้ก้าวหน้าอย่างมากทั้งด้านภาษาหลักและเครื่องมือสนับสนุน ล่าสุด Java 24 ได้เปิดตัวออกมาแล้ว และ Java 21 เป็นเวอร์ชัน LTS (Long-Term Support) ที่แนะนำให้ใช้งานสำหรับระบบจริงในระยะยาว บทความนี้จะช่วยให้คุณเข้าใจภาพรวมของ Java เวอร์ชันล่าสุด รวมถึงฟีเจอร์เด่น โครงสร้างภาษาที่ควรรู้ และแนวทางการพัฒนา Java ยุคใหม่ ภาพรวมเวอร์ชัน Java ล่าสุด เวอร์ชัน สถานะ วันเปิดตัว Java 24 เวอร์ชันล่าสุด มีนาคม 2025 Java 21 เวอร์ชัน LTS ล่าสุด กันยายน 2023 Java 17 LTS รุ่นก่อนหน้า กันยายน 2021 Java 11 LTS เก่า กันยายน 2018 โครงสร้างพื้นฐานของภาษา Java คลาสและอ็อบเจกต์ : โครงสร้างหลักของโปรแกรม Java Primitive Types : int, double, char, boolean เป็นต้น Control Statements : if, switch, while, for, do-while Methods : การแยกโค้ดเป็นหน่วยที่นำกลับมาใช้ซ้ำได้ Array และ Collection : จัดเก็บและจัดการข้อมูลหลายรายการ Exception Handling : try-catch-finally OOP Co...
สอนสร้าง Cron Jobs ด้วย Spring Boot
- รับลิงก์
- X
- อีเมล
- แอปอื่นๆ
Cron Jobs คือเครื่องมือที่ช่วยให้สามารถกำหนดตารางเวลาสำหรับการทำงานของระบบได้ โดยใน Spring Boot เราสามารถใช้ความสามารถของ @Scheduled
จาก Spring Framework เพื่อจัดการงานที่ต้องการรันตามเวลาที่กำหนดได้ง่าย ๆ
ขั้นตอนการสร้าง Cron Jobs ใน Spring Boot
1. เพิ่ม Dependency
ใน pom.xml
ของโปรเจกต์ Spring Boot ให้ตรวจสอบว่ามี dependency ดังต่อไปนี้
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
2. เปิดใช้งาน Scheduled Tasks
เพิ่มคำสั่ง @EnableScheduling
ในคลาสหลักของโปรเจกต์
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;
@SpringBootApplication
@EnableScheduling
public class CronJobApplication {
public static void main(String[] args) {
SpringApplication.run(CronJobApplication.class, args);
}
}
3. สร้าง Scheduled Task
สร้างคลาสใหม่สำหรับการตั้งค่า Cron Job และกำหนดตารางเวลาโดยใช้คำสั่ง @Scheduled
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
public class TaskScheduler {
// รันทุก ๆ 5 วินาที
@Scheduled(fixedRate = 5000)
public void fixedRateTask() {
System.out.println("Fixed rate task - " + System.currentTimeMillis() / 1000);
}
// รันทุก ๆ 5 วินาที (หลังจากทำงานเสร็จ)
@Scheduled(fixedDelay = 5000)
public void fixedDelayTask() {
System.out.println("Fixed delay task - " + System.currentTimeMillis() / 1000);
}
// ใช้ cron expression เพื่อกำหนดเวลา
@Scheduled(cron = "0 0/1 * * * ?") // รันทุก ๆ นาที
public void cronTask() {
System.out.println("Cron task - " + System.currentTimeMillis() / 1000);
}
}
4. การใช้ Cron Expression
Cron Expression มีรูปแบบดังนี้:
Seconds Minutes Hours DayOfMonth Month DayOfWeek Year (optional)
ตัวอย่าง:
0 0/5 * * * ?
: รันทุก ๆ 5 นาที0 0 12 * * ?
: รันทุก ๆ เที่ยงวัน0 15 10 * * ?
: รันเวลา 10:15 ของทุกวัน
5. การปรับแต่ง Task
- ใช้ fixedRate เมื่อต้องการรันงานตามช่วงเวลาที่แน่นอนโดยไม่สนใจเวลาที่งานใช้เสร็จ
- ใช้ fixedDelay เมื่อต้องการรันงานหลังจากงานก่อนหน้าทำเสร็จแล้ว
ตัวอย่างไฟล์ application.properties
หากต้องการเปลี่ยนโซนเวลา (timezone) หรือปรับแต่ง Scheduler:
spring.task.scheduling.pool.size=10
spring.task.scheduling.thread-name-prefix=Scheduler-
spring.main.time-zone=Asia/Bangkok
สรุป
การสร้าง Cron Jobs ใน Spring Boot ง่ายและสะดวกมาก ด้วย @Scheduled
ที่ช่วยกำหนดเวลาทำงานได้หลากหลายรูปแบบ หากต้องการงานที่มีประสิทธิภาพมากขึ้นสามารถเพิ่ม thread pool หรือปรับแต่งค่าใน application.properties
ได้ตามความต้องการ
- รับลิงก์
- X
- อีเมล
- แอปอื่นๆ
โพสต์ยอดนิยมจากบล็อกนี้
สอนสร้างเกมส์บริหารเหตุการณ์ต่างๆในร้านนวด
ตัวอย่างสุ่มเหตุการณ์ต่างๆในร้านนวด ที่เหลือต่อยอดเอาเองนะครับ ^^ ในบทความนี้ เราจะสร้างระบบบริหารร้านนวดโดยใช้ Spring Boot ซึ่งมีฟีเจอร์ต่างๆ เช่น: สุ่ม Event ที่ส่งผลกระทบต่อ Entity แจ้งสถานะผลกระทบผ่าน WebSocket อัปเดตข้อมูลในฐานข้อมูลโดยตรง 1. WebSocket Configuration @Configuration @EnableWebSocketMessageBroker public class WebSocketConfig implements WebSocketMessageBrokerConfigurer { @Override public void configureMessageBroker(MessageBrokerRegistry config) { config.enableSimpleBroker("/topic"); config.setApplicationDestinationPrefixes("/app"); } @Override public void registerStompEndpoints(StompEndpointRegistry registry) { registry.addEndpoint("/event-websocket").setAllowedOrigins("*").withSockJS(); } } 2. Event Entity @Entity public class Event { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private...
คู่มือ Java ฉบับทันสมัย (อัปเดตล่าสุดปี 2025)
คู่มือ Java ฉบับทันสมัย (อัปเดตล่าสุดปี 2025) บทนำ Java ยังคงเป็นภาษายอดนิยมที่ได้รับความนิยมอย่างต่อเนื่องตั้งแต่ยุค 1990 จนถึงปัจจุบัน ในปี 2025 Java ได้ก้าวหน้าอย่างมากทั้งด้านภาษาหลักและเครื่องมือสนับสนุน ล่าสุด Java 24 ได้เปิดตัวออกมาแล้ว และ Java 21 เป็นเวอร์ชัน LTS (Long-Term Support) ที่แนะนำให้ใช้งานสำหรับระบบจริงในระยะยาว บทความนี้จะช่วยให้คุณเข้าใจภาพรวมของ Java เวอร์ชันล่าสุด รวมถึงฟีเจอร์เด่น โครงสร้างภาษาที่ควรรู้ และแนวทางการพัฒนา Java ยุคใหม่ ภาพรวมเวอร์ชัน Java ล่าสุด เวอร์ชัน สถานะ วันเปิดตัว Java 24 เวอร์ชันล่าสุด มีนาคม 2025 Java 21 เวอร์ชัน LTS ล่าสุด กันยายน 2023 Java 17 LTS รุ่นก่อนหน้า กันยายน 2021 Java 11 LTS เก่า กันยายน 2018 โครงสร้างพื้นฐานของภาษา Java คลาสและอ็อบเจกต์ : โครงสร้างหลักของโปรแกรม Java Primitive Types : int, double, char, boolean เป็นต้น Control Statements : if, switch, while, for, do-while Methods : การแยกโค้ดเป็นหน่วยที่นำกลับมาใช้ซ้ำได้ Array และ Collection : จัดเก็บและจัดการข้อมูลหลายรายการ Exception Handling : try-catch-finally OOP Co...
การใช้งาน RPC (Remote Procedure Call) ด้วย Java พร้อมตัวอย่างเกมออนไลน์ (ต่อ)
เพื่อให้สามารถอัปเดตสถานะของผู้เล่นคนอื่นในเกมออนไลน์ผ่าน RPC ได้ คุณสามารถใช้ฟีเจอร์ Server Streaming RPC ของ gRPC เพื่อให้เซิร์ฟเวอร์ส่งข้อมูลสถานะของผู้เล่นแบบเรียลไทม์ไปยังไคลเอนต์ที่กำลังเชื่อมต่ออยู่ ตัวอย่างด้านล่างแสดงวิธีการเพิ่มฟีเจอร์นี้ในเกม: อัปเดตไฟล์ game.proto เพิ่มเมธอดสำหรับการสตรีมสถานะของผู้เล่น: syntax = "proto3" ; service GameService { rpc JoinGame (JoinRequest) returns (JoinResponse) ; rpc SendMove (MoveRequest) returns (MoveResponse) ; rpc StreamPlayerUpdates (PlayerUpdateRequest) returns (stream PlayerUpdateResponse) ; } message JoinRequest { string playerName = 1 ; } message JoinResponse { string welcomeMessage = 1 ; } message MoveRequest { string playerName = 1 ; string move = 2 ; } message MoveResponse { string result = 1 ; } message PlayerUpdateRequest { string playerName = 1 ; // ชื่อผู้เล่นที่ต้องการรับการอัปเดต } message PlayerUpdateResponse { string playerName = ...
ความคิดเห็น
แสดงความคิดเห็น