"హాయ్, అమిగో!
"నేను మీకు చిన్న, కానీ ఆసక్తికరమైన విషయం గురించి చెప్పాలనుకుంటున్నాను."
"నేను వింటున్నాను. నేను చిన్న మరియు ఆసక్తికరమైన విషయాలను ప్రేమిస్తున్నాను."
"సరే, ప్రతి థ్రెడ్ ఆబ్జెక్ట్కు రన్() పద్ధతి ఉంటుందని మీకు తెలుసు. మరియు మీరు దానిని స్టార్ట్() పద్ధతిని ఉపయోగించి ప్రత్యేక థ్రెడ్లో అమలు చేయవచ్చు."
"అవును, అయితే."
"కానీ ఇప్పుడు ఈ పరిస్థితిని ఊహించుకోండి: మీరు కొంత పనిని చేయడానికి ఒక థ్రెడ్ని ప్రారంభిస్తారు, కానీ మినహాయింపు విసిరివేయబడింది మరియు థ్రెడ్ రన్ చేయడం ఆగిపోతుంది ఎందుకంటే దానికి ఏమి చేయాలో తెలియదు. మీరు ఈ లోపం గురించి ఏదో ఒకవిధంగా తెలుసుకోవలసిన అవసరం లేదా?"
"నేను అంగీకరిస్తున్నాను. ఇతర రన్నింగ్ థ్రెడ్లో సంభవించిన మినహాయింపును నేను ఎలాగైనా పట్టుకోవాలి. జావా కూడా దానికి మద్దతు ఇస్తుందా?"
"నువ్వు నన్ను అవమానించావు. తప్పకుండా చేస్తుంది."
"జావా సృష్టికర్తలు UncaughtExceptionHandler అనే ప్రత్యేక ఇంటర్ఫేస్ను కనుగొన్నారు. మరొక థ్రెడ్లో సంభవించే మినహాయింపును ఆ థ్రెడ్ క్యాచ్ చేయకుంటే దాన్ని ఎలా క్యాచ్ చేయాలో మరియు హ్యాండిల్ చేయాలో ఇక్కడ ఉంది:"
public class DownloadManager
{
public static void main(String[] args)
{
Thread thread = new DownloadThread();
thread.setUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler()
{
@Override
public void uncaughtException(Thread t, Throwable e)
{
}
});
thread.start();
}
"థ్రెడ్ ఆబ్జెక్ట్కు ప్రత్యేక సెట్అన్కాట్ఎక్సెప్షన్హ్యాండ్లర్ పద్ధతి ఉంది. మీరు దానిని థ్రెడ్ను అమలు చేసే ఆబ్జెక్ట్ను పాస్ చేయాలి. అన్కాట్ఎక్సెప్షన్హ్యాండ్లర్ ఇంటర్ఫేస్. ఈ ఇంటర్ఫేస్కు ఒకే ఒక పద్ధతి ఉంది: అన్కాట్ఎక్సెప్షన్ (థ్రెడ్ టి, త్రోబుల్ ఇ) . ఇది పిలవబడే పద్ధతి రన్ పద్ధతిలో గుర్తించబడని మినహాయింపు సంభవించినట్లయితే ఆమోదించబడిన వస్తువు."
"ఎగువ ఉన్న నా ఉదాహరణలో, నేను థ్రెడ్ను అమలు చేసే అనామక అంతర్గత తరగతిని (ఎరుపు రంగులో హైలైట్ చేసాను) ప్రకటిస్తున్నాను. Thread.UncaughtExceptionHandler ఇంటర్ఫేస్. మరియు నేను దాని అన్కాట్ఎక్సెప్షన్(థ్రెడ్ t, త్రోబుల్ ఇ) పద్ధతిని భర్తీ చేస్తాను."
"పద్ధతి యొక్క పరామితి జాబితా నుండి మీరు చూడగలిగినట్లుగా, రెండు ఆర్గ్యుమెంట్లు ఆమోదించబడతాయి: మినహాయింపు సంభవించిన థ్రెడ్ ఆబ్జెక్ట్కు సూచన మరియు మినహాయింపు కూడా త్రోబుల్ ఇగా ఆమోదించబడింది."
"సరే, నాకు థ్రెడ్ వేరియబుల్ t ఎందుకు అవసరం? మనం ఏ థ్రెడ్ను థ్రెడ్లో ఉంచుతున్నామో మాకు ఇప్పటికే తెలియదా ?
"మీరు ఈ పరిస్థితుల కోసం యూనివర్సల్ హ్యాండ్లర్ను వ్రాయగలిగేలా వారు దీన్ని చేసారు. అంటే మీరు ఒకే వస్తువును సృష్టించి, డజన్ల కొద్దీ విభిన్న థ్రెడ్లకు పంపవచ్చు. అప్పుడు అన్కాట్ ఎక్సెప్షన్ (థ్రెడ్ టి, త్రోబుల్ ఇ) పద్ధతి మీకు ఎల్లప్పుడూ సూచనను ఇస్తుంది మినహాయింపు సంభవించిన థ్రెడ్ ఆబ్జెక్ట్."
"ఇంకా, మీరు డజన్ల కొద్దీ థ్రెడ్లను సృష్టించవచ్చు, ఉదాహరణకు, నిర్దిష్ట విధులను నిర్వహించడానికి లూప్లో. సాధారణంగా, థ్రెడ్ ఆబ్జెక్ట్కి సంబంధించిన ఈ సూచన నిరుపయోగంగా ఉండదు. నేను మీకు హామీ ఇస్తున్నాను."
"నేను నిన్ను నమ్ముతాను. నువ్వు ఎప్పుడూ తప్పు చేయలేదు."
GO TO FULL VERSION