Thread tmp = new Threadnew Runnable public void run sockp0 = null; try sockp0 = new Sockethost port;
这段代码的作用是尝试建立一个Socket连接,并设置一个超时时间。代码中使用了一个临时的线程来执行建立Socket连接的操作。
以下是每行代码的解释:
-
创建一个名为tmp的新线程,该线程实现了Runnable接口,重写了run()方法。
-
在线程内部将sockp[0]设为null,表示还未建立Socket连接。
-
尝试建立Socket连接,如果成功,则将sockp[0]设为新建立的Socket对象。
-
如果建立连接时发生异常,将异常存储到ee[0]中,并判断如果sockp[0]不为null且已连接,则关闭连接。
-
将sockp[0]设为null,表示连接未建立成功。
-
设置线程名为"Opening Socket " + host。
-
启动线程。
-
尝试等待线程tmp执行完毕,最长等待时间为timeout毫秒。
-
如果等待过程中被中断,则捕获InterruptedException异常。
-
如果连接建立成功,即sockp[0]不为null且已连接,则将socket设为sockp[0]。
-
返回socket对象。
-
如果连接未建立成功,则将message设为"timeout: "。
-
如果连接建立过程中发生异常,则将message设为异常的字符串表示。
-
中断线程tmp。
-
将tmp设为null。
-
抛出JSchException异常,传入message和ee[0]作为异常信息。
tmp.join((long)timeout)这一行的作用是等待线程tmp执行完毕,最长等待时间为timeout毫秒。如果在指定的时间内线程tmp未完成,则会抛出InterruptedException异常
原文地址: http://www.cveoy.top/t/topic/icLk 著作权归作者所有。请勿转载和采集!