📄 wakeupadapter.java
字号:
/** * WakUpAdapter.java *发送请求后,对方没有数据就不做响应, *而自己还为了等待这个数据而阻塞, *这个问题是通过添加一个"唤醒器"来实现的, *每次发送数据进行阻塞等待时,打开唤醒器, *15秒后,如果缓存中仍然没有数据的话, *就向缓存装入一个无效数据, *目的是唤醒因缓存无数据而阻塞的线程, *此线程被唤醒后,会发现这个数据是无效数据, *从而放弃它,重新向请求队列中的peer 发送请求。 * * Created on 2005年3月16日, 上午9:07 */package com.sinpool.rivercrescent.myutil;import net.jxta.endpoint.*;import net.jxta.document.*;import net.jxta.protocol.*;import com.sinpool.rivercrescent.BufferZone.JoinedDownloadMessageBuffer;/** * * @author sinpool */public class WakeUpAdapter implements Runnable{ private JoinedDownloadMessageBuffer jdmb = null; /** Creates a new instance of WakUpAdapter */ public WakeUpAdapter(JoinedDownloadMessageBuffer jdmb ) { this.jdmb = jdmb; } public void run(){System.out.println("唤醒器启动 SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS"); try {Thread.sleep(15000);} catch (Exception e) {} if ( jdmb.size() == 0 ){ Message outmsg = new Message(); ByteArrayMessageElement outMsgTypeElement = new ByteArrayMessageElement("Type",MimeMediaType.XMLUTF8,"Req".getBytes(),null); outmsg.addMessageElement(outMsgTypeElement);System.out.println("唤醒器开始工作………………");synchronized ( jdmb ){ jdmb.notify();}System.out.println("唤醒器已经工作完毕………………"); } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -