java thread正常中止的问题:run()中的代码一直在执行,如果中止?
在我们公司开发的系统中,需要连接远程的另外一个系统的socket,现在出现这种问题,远程socket没有响应,可能是没连上,或者是连上了没响应,导致我本地程序等待。为了防止这种等待,我把连接socket的代码放到一个线程中执行,等待时间为3秒,超过3秒,没有返回正确的值,就中止该线程。最直接的方法就是调用stop(),但是jdk1.2以后不推荐使用stop()来强制结束线程,而是希望让线程自己结束,从run()方法return,我也很想这样,但是这个连接socket的过程,可能要一个小时,甚至不会结束,我用什么方法来结束这个线程呢?代码如下
public void run()
{
try
{
socket = new Socket(hostAdd,hostPort);
flag = 1;
}
catch(UnknownHostException ex){
System.out.println("Cannot connect destination host."+ex);
flag = 0;
}
catch (Exception e)
{
System.out.println("Cannot connect destination host."+e);
flag = 0;
}
}