ÀÛ¾÷°ø°£ÀÌ µ¿½Ã¼º ÇÁ·¹ÀÓ¿öÅ©¸¦ »ç¿ëÇÏÁö ¾Ê´Â °æ¿ì¿¡µµ µ¿½Ã¼ºÀ» Àß ¾Ë°í ÀÖ¾î¾ß ÇÔÀ» ÀÌ¹Ì È®ÀÎÇß½À´Ï´Ù. ÀÛ¾÷°ø°£ º¯°æ ¹× ½ºÄÉÁÙ¸µ ±ÔÄ¢ »ç¿ëÀ» Àϰýó¸®Çϸé ÀÛ¾÷°ø°£À» ¼öÁ¤ ÁßÀÎ ´Ù¸¥ Ç÷¯±×ÀÎ(¹× ÇØ´ç ½º·¹µå)°ú ÀÛ¾÷°ø°£À» °øÀ¯ÇÏ´Â µ¥ µµ¿òÀÌ µË´Ï´Ù. Ç÷¯±×ÀÎÀÌ Àϰýó¸® ¹× ±ÔÄ¢(ÀÚ¿ø º¯°æ Àϰýó¸® ÂüÁ¶)À» »ç¿ë ÁßÀ̸é Ç÷§Æû µ¿½Ã¼º ¸ÞÄ¿´ÏÁòÀ» »ç¿ëÇÏ¿© µ¿ÀÏÇÑ ÀÛ¾÷À» ¼öÇàÇϱⰡ ½±½À´Ï´Ù.
ÀÛ¾÷Àº ´Ù¸¥ ÀÛ¾÷°ú µ¿½Ã¿¡ ½ÇÇà ÁßÀÎ ºñµ¿±â ÀÛ¾÷ÀÇ ±âº» ´ÜÀ§ÀÔ´Ï´Ù. ÀÚ¿ø Ç÷¯±×ÀÎÀº WorkspaceJobÀ» ºñµ¿±â ÀÚ¿ø ¼öÁ¤À» Á¤ÀÇÇÏ´Â Æí¸®ÇÑ ¸ÞÄ¿´ÏÁòÀ¸·Î Á¤ÀÇÇÕ´Ï´Ù. IWorkspaceRunnable¿¡¼ Á¤»óÀûÀ¸·Î Àϰý󸮵Ǵ ÄÚµå´Â ÀÛ¾÷°ø°£ ÀÛ¾÷ ºÎ¼Ó À¯ÇüÀÎ runInWorkspace ¸Þ¼Òµå¿¡ ´ë½Å ¹èÄ¡µË´Ï´Ù. ÀÛ¾÷Àº IWorkspace ÇÁ·ÎÅäÄÝÀ» »ç¿ëÇÏ¿© Äڵ带 ½ÇÇàÇÏ´Â ´ë½Å ´Ù¸¥ ÀÛ¾÷°ú ¸¶Âù°¡Áö ¹æ½ÄÀ¸·Î ½ºÄÉÁٵ˴ϴÙ. ÀÛ¾÷ÀÌ ½ºÄÉÁٵDZâ Àü¿¡ ÀûÀýÇÑ ½ºÄÉÁÙ¸µ ±ÔÄ¢ÀÌ ÀÛ¾÷¿¡ Ãß°¡µÇ¾î¾ß ÇÕ´Ï´Ù.
¿¹Á¦ ÀÛ¾÷°ø°£ ½ÇÇà ÇÁ·Î±×·¥ ¹× ÀÛ¾÷À¸·Î ÀÛ¼ºÇϱâ À§ÇØ ¼öÇàÇØ¾ß ÇÒ »çÇ×À» »ìÆìº¸±â·Î ÇÕ´Ï´Ù.
IWorkspaceRunnable myRunnable =
new IWorkspaceRunnable() {
public void run(IProgressMonitor monitor) throws CoreException {
//do the actual work in here
doSomeWork();
...
}
}
ÀÛ¾÷ÀÌ
WorkspaceJob
ºÎ¼Ó À¯Çü¿¡ ÀûÀýÇÑ ¸Þ¼Òµå·Î À̵¿ÇÕ´Ï´Ù.
class MyWorkspaceJob extends WorkspaceJob {
public MyWorkspaceJob() {
super("My Workspace Job");
}
public IStatus runInWorkspace(IProgressMonitor monitor) {
//do the actual work in here
doSomeWork();
return Status.OK_STATUS;
}
}
½ÇÇà ÇÁ·Î±×·¥Àº ´ÙÀ½°ú °°ÀÌ Æ¯º°È÷ È£ÃâµÇ¾î¾ß ÇÕ´Ï´Ù.
IWorkspace workspace = ResourcesPlugin.getWorkspace();
workspace.run(myRunnable, myProject, IWorkspace.AVOID_UPDATE, null);
ÀÛ¾÷Àº ´Ù¸¥ ÀÛ¾÷ó·³ ½ºÄÉÁٵ˴ϴÙ. Ç÷§Æû ÀÛ¾÷ °ü¸®ÀÚ´Â ¿ì¼±¼øÀ§, ´ë±â¿ÀÇ ´Ù¸¥ ÀÛ¾÷ ¹×
½ºÄÉÁÙ¸µ ±ÔÄ¢¿¡ µû¶ó ÀÛ¾÷À» ½ÇÇàÇÕ´Ï´Ù. myProjectÀÇ µ¿½Ã ¼öÁ¤À» ¹æÁöÇÏ·Á¸é
½ºÄÉÁÙ¸µ ±ÔÄ¢À» ÀÛ¾÷¿¡ ÷ºÎÇØ¾ß ÇÕ´Ï´Ù.
MyWorkspaceJob job = new MyWorkspaceJob();
job.setRule(myProject);
job.schedule();
ÀÌÁ¦ Á¶ÀÛÀÌ ÀÛ¾÷À¸·Î ±¸¼ºµÇ¾úÀ¸¹Ç·Î, ¸ðµç ½ºÄÉÁÙ¸µ ¸ÞÄ¿´ÏÁò(¿ì¼±¼øÀ§, Áö¿¬, À罺ÄÉÁÙ¸µ)À» »ç¿ëÇÒ ¼ö
ÀÖ½À´Ï´Ù. ÀÚ¿ø º¯°æ À̺¥Æ®´Â ÀÛ¾÷ÀÌ ½ÇÇàÀ» ¿Ï·áÇÒ ¶§±îÁö Àϰý󸮵˴ϴÙ.