เวลาเจอ request ที่ต้องประมวลผลนานกว่าปกติ ถ้าใช้ method ปกติ handle Play! จะยกเลิก thread นั้นทิ้งทำให้ไม่ได้ผลลัพธ์อย่างที่ต้องการ เช่นย่อภาพ หรือหมุนภาพแล้วต้องการรู้ว่าเสร็จเมื่อไหร่เพื่อเอามาแสดง คนทำ Play! ก็คงรู้เลยทำ Suspend Job ไว้ให้สำหรับงานแบบนี้โดยเฉพาะ ลองดูตัวอย่างหมุนภาพด้านล่าง
เริ่มจาก class ที่ทำหน้าที่ในการหมุนภาพไปทางขวาเก้าสิบองศา
public class RotateRightJob extends Job {
private Photo photo;
public RotateRightJob(Photo photo) {
this.photo = photo;
}
public void doJob() {
photo.rotate(90)l
}
}
จากนั้น controller ที่รับ request มาเพื่อหมุนภาพ
public static void rotateRightPhoto(Long photoID) {
if (request.isNew) {
Photo photo = Photo.findById(photoID);
Future task = new RotateRightJob(photo).now();
waitFor(task);
}
renderText("Success");
}
ใน Play! ยังมี Job อีกสองแบบคือ Bootstrap Job และ Scheduler Job ซึ่งใช้บ่อยพอสมควรเหมือนกันและก็ทำหน้าที่ตามชื่อคือ ทำงานตอนเริ่มต้น หรือ ตามเวลาที่กำหนด หน้าตาก็จะคล้ายกับ Suspend Job ไว้มีเวลาอีกจะค่อยๆ มาเขียนไว้อีกที