很晚很冷 。。。问个简单的问题,顺便散分.... 不知道有没有人哈,大多数这个时候我都睡咯。。我有个检查网络连接状态的方法,姑且叫他check() 吧。这个check() 在正常情况下能放回一个值给我,如果网络突然断了,这个方法会阻塞一会。这样给人的感受就不好了,我想规定一个时间如500ms,如果超过这个时间,check()方法就返回一个错误信息给我。这个check()方法是人家要调用的。不知可有高人呀。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 java.util.concurrent.Futurejava.util.concurrent.FutureTaskjavax.swing.SwingWorker 中有 T get(long timeout, TimeUnit unit) 方法。 javax.swing.SwingWorker 这个应该没什么用,我不做界面。因为这个方法是给人家调用的。我等很久那么人家也会等很久。java.util.concurrent.Futurejava.util.concurrent.FutureTask这两个东西是并非使用的,这个应该没有还没达到那种高度吧 如果你在java里面可以用定时器java.util.Timer,然后timer.schedule,你的执行调度的类需要继承TimerTask(java.util.TimerTask)具体例子网上多的是,你可以查一下,就不多废话了 不知道那个 check 是怎么实现的,如果用的是 socket 的话,那其本身就自带有连接超时检查的 本身是不带的,这个check()方法是调用Linux的Shell文件,由Shell返回结果的。 linux里面的shell有定时的,你可以用里面的命令crontab -e 然后每隔一段时间就执行你的程序 就是掉用的Linux中的命令被阻塞了呀!比如你在linux下输入一个命令,而这个命令会等很久才会有结果,我的方法是根据他的结果做出相应的操作,他阻塞了,那么调用的方法也就阻塞了。 Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();while (interfaces.hasMoreElements()) { NetworkInterface interf = interfaces.nextElement(); if (interf.isUp() && !interf.isLoopback()) return true;} Check()方法,你可以写个定时器调用~ check方法是自己写的吗?可以试试如果是自己写的,可以在check方法里启动一个线程去掉用shell,同时用一个线程监控调用shell线程的状态和时间,如果调用shell的线程结束,则返回状态,如果超时,则启动一个shell去kill之前的shell 这个方法还比较好,不过kill之前的Shell又称问题了,而且,这个线程杀掉之后得放回一个值给我才行,用线程很不好返回一个值! 再开个线程 check 被别人调用的方法 开个线程check 超时直接返回了也就是说你的方法是秒内返回的 至于出不出来结果 由另一个线程决定 关于正则表达式 java 判断3个字符串相同有什么好的高效率的方法? java控制台应用程序 字符进行四则运算时是使用字符编码进行运算 如何从内容中过滤掉图片,只要显示部分文字内容? 重新开贴求解,急,希望可以有人帮忙啊,困饶了两天啦 Tomcat安装后访问不了 问JButton如何加载图片 问一个比较难的GUI的问题 JDK1.4的setFocusTraversalKeysEnabled()方法在1.3里如何解决? IBM中国研究院面试题 半学半做的Java文件传输,但是找不到问题原因,请诸位大侠帮忙
java.util.concurrent.Future
java.util.concurrent.FutureTask
javax.swing.SwingWorker
java.util.concurrent.FutureTask
这两个东西是并非使用的,这个应该没有还没达到那种高度吧
具体例子网上多的是,你可以查一下,就不多废话了
然后每隔一段时间就执行你的程序
while (interfaces.hasMoreElements()) {
NetworkInterface interf = interfaces.nextElement();
if (interf.isUp() && !interf.isLoopback())
return true;
}
如果是自己写的,可以在check方法里启动一个线程去掉用shell,同时用一个线程监控调用shell线程的状态和时间,如果调用shell的线程结束,则返回状态,如果超时,则启动一个shell去kill之前的shell