wakeupadapter.java

来自「一个基于NetBeans平台开发的」· Java 代码 · 共 47 行

JAVA
47
字号
/** * 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 + =
减小字号Ctrl + -
显示快捷键?