JavaRush /جاوا بلاگ /Random-UR /تھریڈ گروپ
Core
سطح
Екатеринбург

تھریڈ گروپ

گروپ میں شائع ہوا۔
صبح بخیر اور نیا سال مبارک ہو! ملٹی تھریڈنگ، یعنی تھریڈ گروپ کے بارے میں تھوڑا سا مزید سمجھنے میں میری مدد کریں۔ میں نے گوگل کیا، پڑھا، اور اہم جوہر سمجھا: مقصد ایک گروپ کی تنظیم کے ذریعے سیکورٹی، مربوط انتظام ہے۔
انتظامی اور حفاظتی وجوہات کی بنا پر تھریڈز کو تھریڈ گروپس میں گروپ کیا گیا ہے۔ ایک تھریڈ گروپ دوسرے گروپ سے تعلق رکھتا ہے، جو اوپری سطح پر مین (سسٹم) گروپ کے ساتھ ایک درجہ بندی بناتا ہے۔ ایک گروپ سے تعلق رکھنے والے دھاگوں کو ایک ہی وقت میں کنٹرول کیا جا سکتا ہے - آپ کو گروپ میں تمام تھریڈز کے کام میں ایک ہی وقت میں رکاوٹ ڈالنے یا ان کے لیے ایک ہی زیادہ سے زیادہ عملدرآمد کی ترجیحی قدر مقرر کرنے کا حق ہے۔ تھریڈ گروپس کو سیکیورٹی ڈومینز کی وضاحت کے لیے بھی استعمال کیا جا سکتا ہے۔ ایک گروپ کے اندر دھاگوں کو عام طور پر باہمی اثر و رسوخ کے امکان سے نوازا جاتا ہے، جو نیسٹڈ گروپس کے دھاگوں تک بھی پھیلا ہوا ہے۔ جب ہم کہتے ہیں "اثر،" تو ہمارا مطلب ہے کہ کوئی بھی طریقہ کال تھریڈ کے رویے کو متاثر کر سکتا ہے، کہو، اس کی ترجیح کو تبدیل کر سکتا ہے، یا رکاوٹ پیدا کر سکتا ہے۔
(ماخذ: ٹائیٹس )
ایک ہی تھریڈ کو روکنے اور لگاتار تمام تھریڈز کو روکنے کے لیے، ایک گروپ کا تصور متعارف کرایا گیا تھا۔ ایک تھریڈ صرف ان تھریڈز کو متاثر کر سکتا ہے جو اسی گروپ میں ہیں۔ تھریڈ گروپ کی نمائندگی تھریڈ گروپ کلاس کرتی ہے۔ یہ تنظیم آپ کو غیر مطلوبہ بیرونی اثرات سے بہاؤ کی حفاظت کرنے کی اجازت دیتی ہے۔ ایک تھریڈ گروپ دوسرے گروپس پر مشتمل ہو سکتا ہے، جس سے تمام تھریڈز اور گروپس کو ایک درجہ بندی کے درخت میں منظم کیا جا سکتا ہے جس میں ہر تھریڈ گروپ آبجیکٹ، جڑ والے کو چھوڑ کر، ایک پیرنٹ رکھتا ہے۔
(ماخذ: ٹائیٹس ) مختلف مضامین کو پڑھنے کے بعد، میں نے ایک چھوٹا سا کوڈ لکھنے کا فیصلہ کیا جس میں میں ایک گروپ کے ایک تھریڈ سے دوسرے گروپ کے بہاؤ میں رکاوٹ نہیں ڈالوں گا۔ اور کچھ کام نہیں ہوا: یہ مجھے مداخلت کرنے کی اجازت دیتا ہے(( میرا کوڈ: مداخلت کرنا کیوں ممکن ہے؟ آؤٹ پٹ یہ ہے: public class Test { public static ArrayList threads = new ArrayList (); public static ArrayList groups = new ArrayList (); public static void main(String[] args) throws InterruptedException { final ThreadGroup group1 = new ThreadGroup("GROUP 1"); final ThreadGroup group2 = new ThreadGroup("GROUP 2"); final ThreadGroup group3 = new ThreadGroup("GROUP 3"); groups.add(group1); groups.add(group2); groups.add(group3); for (int i = 0; i < groups.size(); i++) { for (int j = 1; j < 5; j++) { Thread thread = new Thread(groups.get(i), "THREAD №" + j) { @Override public void run() { while (!isInterrupted()) { try { Thread.sleep(500); } catch (InterruptedException e) { System.out.println(getName() + " : " + getThreadGroup().getName() + " прервана"); } } } }; threads.add(thread); thread.start(); } } Thread thread = new Thread(group1, "THREAD №5") { @Override public void run() { group2.interrupt(); while (true); } }; thread.start(); threads.add(thread); for (Thread t : threads) System.out.println(t); } } Thread[THREAD №1,5,GROUP 1] Thread[THREAD №2,5,GROUP 1] Thread[THREAD №3,5,GROUP 1] Thread[THREAD №4,5,GROUP 1] Thread[THREAD №1,5,GROUP 2] Thread[THREAD №2,5,GROUP 2] Thread[THREAD №3,5,GROUP 2] Thread[THREAD №4,5,GROUP 2] Thread[THREAD №1,5,GROUP 3] Thread[THREAD №2,5,GROUP 3] Thread[THREAD №3,5,GROUP 3] Thread[THREAD №4,5,GROUP 3] Thread[THREAD №5,5,GROUP 1] THREAD №1 : GROUP 2 прервана THREAD №2 : GROUP 2 прервана THREAD №4 : GROUP 2 прервана THREAD №3 : GROUP 2 прервана
تبصرے
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION