เวลาเจอ 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 ไว้มีเวลาอีกจะค่อยๆ มาเขียนไว้อีกที