SwingWorker
سوئنگ ورکر ایک مقبول یوٹیلیٹی کلاس ہے جسے سن مائیکرو سسٹمز نے جاوا پروگرامنگ زبان کی سوئنگ لائبریری کے لیے تیار کیا ہے۔ سوئنگ ورکر ایونٹ ڈسپیچنگ تھریڈ کے مناسب استعمال کو قابل بناتا ہے۔ جاوا 6 تک، سوئنگ ورکر جے آر ای میں شامل ہے۔ سوئنگ ورکر کے کئی غیر مطابقت پذیر، غیر سرکاری ورژن 1998 سے 2006 تک تیار کیے گئے تھے، اور جاوا 6 سے پہلے کے ان ورژنوں پر وافر دستاویزات سے بچنے کے لیے خیال رکھنا چاہیے۔ جاوا 6 میں استعمال ایونٹ ڈسپیچنگ تھریڈ کا مسئلہ سوئنگ ورکر اس وقت مفید ہوتا ہے جب صارف کے تعامل کے واقعہ کے بعد وقت طلب کام انجام دینا ہوتا ہے (مثال کے طور پر، جے بٹن دبانے پر ایک بہت بڑی ایکس ایم ایل فائل کو تجزیہ کرنا)۔ ایسا کرنے کا سب سے سیدھا سیدھا طریقہ یہ ہے: پرائیویٹ ڈاکیومنٹ ڈاک ؛۔ جے بٹن بٹن = نیا جے بٹن ("اوپن ایکس ایم ایل") ؛ button.addActionListener (نیا ایکشن لسٹنر () {@Override پبلک وایڈ ایکشن پرفارمڈ (ایکشن ایوینٹ ای) {ڈی او سی = لوڈ ایکس ایم ایل () ؛}) ؛ یہ کام کرے گا، لیکن بدقسمتی سے، لوڈ ایکس ایم ایل () طریقہ کو مرکزی سوئنگ تھریڈ (ایونٹ ڈسپیچنگ تھریڈ) کی طرح اسی تھریڈ میں بلایا جائے گا، لہذا اگر طریقہ کار کو انجام دینے کے لیے وقت درکار ہو تو اس دوران جی یو آئی منجمد ہو جائے گا۔ سوئنگ ورکر حل یہ مسئلہ جاوا کے لیے مخصوص نہیں ہے، لیکن بہت سے جی یو آئی ماڈلز کے لیے عام ہے۔ سوئنگ ورکر اس وقت کے دوران جی یو آئی کو جواب دہ رکھتے ہوئے، کسی دوسرے پس منظر کے دھاگے پر وقت طلب کام انجام دے کر اسے حل کرنے کا ایک طریقہ تجویز کرتا ہے۔ کارکن کی تخلیق مندرجہ ذیل کوڈ سوئنگ ورکر کی وضاحت کرتا ہے، جو لوڈ ایکس ایم ایل () طریقہ کال کو سمیٹتا ہے: سوئنگ ورکر کارکن = نیا سوئنگ ورکر <دستاویز، وایڈ> () {@Override عوامی دستاویز ڈو ان بیک گراؤنڈ () {دستاویز intDoc = لوڈ ایکس ایم ایل () ؛ ریٹرن intDoc ؛}} ؛ کارکن پر عمل درآمد طریقہ کار کا استعمال کرتے ہوئے شروع کیا جاتا ہے۔ نتیجہ حاصل کرنا طریقہ کار کا استعمال کرکے نتیجہ حاصل کیا جا سکتا ہے۔ چونکہ ایونٹ ڈسپیچ تھریڈ پر کال کرنا تمام ایونٹس کو بلاک کرتا ہے، بشمول دوبارہ پینٹ کرنا، جب تک کہ ٹاسک مکمل نہ ہو جائے، طویل آپریشن ختم ہونے سے پہلے اسے کال کرنے سے گریز کرنا چاہیے۔ ٹاسک کی تکمیل کے بعد نتیجہ حاصل کرنے کے دو طریقے ہیں: طریقہ کار کو اوور رائیڈ کریں۔ اس طریقہ کو مین ایونٹ ڈسپیچنگ تھریڈ پر بلایا جاتا ہے۔ پرائیویٹ ڈاکیومنٹ ڈاکیومنٹ ؛۔ سوئنگ ورکر <دستاویز، وایڈ> کارکن = نیا سوئنگ ورکر <دستاویز، وایڈ> () {@Override عوامی دستاویز ڈو ان بیک گراؤنڈ () {دستاویز intDoc = لوڈ ایکس ایم ایل () ؛ واپسی intDoc ؛} @Override عوامی وایڈ کیا گیا () {آزمائیں {doc = حاصل کریں () ؛} کیچ (انٹرپٹیڈ ایکسپشن ex) {ex.printStackTrace () ؛} کیچ (ایگزیکیوشن ایکسپشن ex) {ex.printStackTrace () ؛} کارکن کے طریقہ کار کا استعمال کرتے ہوئے سننے والے کو رجسٹر کریں۔ سننے والے کو مزدور ریاست میں ہونے والی تبدیلیوں کے بارے میں مطلع کیا جائے گا۔ مکمل کارکن مثال نجی دستاویز دستاویز ؛۔ جے بٹن بٹن = نیا جے بٹن ("اوپن ایکس ایم ایل") ؛ button.addActionListener (نیا ایکشن لسٹنر () {@Override پبلک وایڈ ایکشن پرفارمڈ (ایکشن ایوینٹ ای) {سوئنگ ورکر <دستاویز، وایڈ> کارکن = نیا سوئنگ ورکر <دستاویز، وایڈ> () {@Override پبلک دستاویز ڈو ان بیک گراؤنڈ () {دستاویز انٹ ڈاک = لوڈ ایکس ایم ایل () ؛ ریٹرن انٹ ڈاک ؛} @Override پبلک وایڈ کیا گیا () سن نے پہلے کے جے ڈی کے کے ساتھ استعمال ہونے والے ورژن جاری کیے ہیں، حالانکہ وہ غیر سرکاری ورژن تھے جو جاوا ایس ای کا حصہ نہیں تھے اور معیاری لائبریری دستاویزات میں ان کا ذکر نہیں کیا گیا تھا۔ ان ورژنوں میں سے سب سے حالیہ ورژن 2003 کا ہے اور اسے اکثر سوئنگ ورکر ورژن 3 کہا جاتا ہے۔ بدقسمتی سے، جے ڈی کے 6 سوئنگ ورکر اور ورژن 3 سوئنگ ورکر مختلف طریقوں کے نام استعمال کرتے ہیں اور مطابقت نہیں رکھتے ہیں۔ بیک پورٹ ورژن (نیچے دیکھیں) اب جاوا 6 سے پہلے کے استعمال کے لیے تجویز کیا جاتا ہے۔ سوئنگ ورکر 3 کو فوری کرنے کی ایک مثال ذیل میں دکھائی گئی ہے: سوئنگ ورکر کارکن = نیا سوئنگ ورکر () {پبلک آبجیکٹ کنسٹرکٹ () {.// بیک گراؤنڈ تھریڈ کے لیے کوڈ شامل کریں} پبلک وایڈ فائنڈ () {.// کوڈ جو آپ یہاں شامل کرتے ہیں وہ UI تھریڈ میں چلے گا}} ؛ worker.start () ؛// بیک گراؤنڈ تھریڈ شروع کریں اسٹارٹ () طریقہ ایک علیحدہ تھریڈ میں کنسٹرکٹ () طریقہ میں شامل کوڈ کو انجام دیتا ہے۔ بیک گراؤنڈ تھریڈ ختم ہونے پر الرٹ ہونے کے لیے، کسی کو صرف ختم شدہ () طریقہ کو اوور رائیڈ کرنے کی ضرورت ہے۔ تعمیر () طریقہ ایک نتیجہ واپس کر سکتا ہے جسے بعد میں سوئنگ ورکر کے حاصل () طریقہ کا استعمال کرتے ہوئے بازیافت کیا جا سکتا ہے۔ جاوا 6 سوئنگ ورکر کا بیک پورٹ جاوا 6 سوئنگ ورکر سے جاوا 5 کا بیک پورٹ http://swingworker.java.net پر دستیاب ہے۔ پیکیج کے نام (org.jdesktop.swingworker) کے علاوہ، یہ جاوا 6 سوئنگ ورکر کے ساتھ مطابقت رکھتا ہے۔ مساوی System.ComponentModel.BackgroundWorker-. NET فریم ورک flash.system.Worker-ایڈوب فلیش android.os.AsyncTask-اینڈرائیڈ حوالہ جات جاوا 7 کے لیے بیرونی لنکس سوئنگ ورکر کلاس دستاویزات۔ سوئنگ ٹیوٹوریل میں اوریکل کے جاوا کنکرنسی سے ورکر تھریڈز اور سوئنگ ورکر۔ جاوا ایس ای 6 میں سوئنگ ورکر کے ساتھ ایپلیکیشن کی کارکردگی کو بہتر بنائیں بذریعہ جان او کونر، جنوری 2007۔ جاوا پلیٹ فارم مضامین مثال کے طور پر جاوا کوڈ