package com.zhiku.future;
import com.zhiku.bean.Request;
import com.zhiku.bean.Response;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
/**
* @author lubycoder@163.com
*/
public class SyncWriteFuture implements WriteFuture<Request> {
private CountDownLatch latch = new CountDownLatch(1);
// 用于清理的timeout
private final long begin = System.currentTimeMillis();
private long timeout;
private Request response;
private final int requestId;
private boolean writeResult;
private Throwable cause;
private boolean isTimeout = false;
public SyncWriteFuture(int requestId) {
this.requestId = requestId;
}
public SyncWriteFuture(int requestId, long timeout) {
this.requestId = requestId;
this.timeout = timeout;
writeResult = true;
isTimeout = false;
}
public Throwable cause() {
return cause;
}
public void setCause(Throwable cause) {
this.cause = cause;
}
public boolean isWriteSuccess() {
return writeResult;
}
public void setWriteResult(boolean result) {
this.writeResult = result;
}
public int requestId() {
return requestId;
}
public Request response() {
return response;
}
public void setResponse(Request response) {
this.response = response;
latch.countDown();
}
public boolean cancel(boolean mayInterruptIfRunning) {
return true;
}
public boolean isCancelled() {
return false;
}
public boolean isDone() {
return false;
}
public Request get() throws InterruptedException, ExecutionException {
latch.wait();
return response;
}
public Request get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException {
if (latch.await(timeout, unit)) {
return response;
}
return null;
}
public boolean isTimeout() {
if (isTimeout) {
return isTimeout;
}
return System.currentTimeMillis() - begin > timeout;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
Netty同步等待数据返回实例代码
共52个文件
class:20个
java:17个
xml:14个
3星 · 超过75%的资源 需积分: 49 166 下载量 95 浏览量
2016-07-01
12:15:00
上传
评论 1
收藏 51KB ZIP 举报
温馨提示
Netty同步等待数据返回实例代码
资源推荐
资源详情
资源评论
收起资源包目录
netty-sample.zip (52个子文件)
netty-sample
pom.xml 2KB
target
classes
test
TestSyncClient.class 694B
com
zhiku
client
Client$1.class 2KB
ClientHandler.class 1KB
Client.class 3KB
server
ServerMap.class 792B
ServerSyncHandler.class 310B
Server$1.class 2KB
ServerHandler.class 2KB
Server.class 2KB
handler
RemoteServerAbstractHandler.class 2KB
bean
Response.class 749B
Request.class 743B
future
WriteFuture.class 559B
SynW$1.class 2KB
SyncWriteMap.class 544B
SynW.class 3KB
SyncWriteFuture.class 3KB
util
SerializationUtil.class 3KB
codec
RpcEncoder.class 1KB
RpcDecoder.class 2KB
generated-sources
annotations
netty-sample.iml 1KB
src
test
java
main
resources
java
test
TestSyncClient.java 261B
com
zhiku
client
ClientHandler.java 571B
Client.java 2KB
server
Server.java 2KB
ServerMap.java 470B
ServerSyncHandler.java 106B
ServerHandler.java 981B
handler
RemoteServerAbstractHandler.java 1015B
bean
Request.java 481B
Response.java 487B
future
SyncWriteFuture.java 2KB
WriteFuture.java 490B
SyncWriteMap.java 281B
SynW.java 2KB
util
SerializationUtil.java 2KB
codec
RpcEncoder.java 772B
RpcDecoder.java 1012B
.idea
uiDesigner.xml 9KB
misc.xml 1KB
junitgenerator-prj-settings.xml 296B
copyright
profiles_settings.xml 76B
modules.xml 264B
compiler.xml 1KB
workspace.xml 73KB
libraries
Maven__com_dyuproject_protostuff_protostuff_core_1_0_10.xml 619B
Maven__com_dyuproject_protostuff_protostuff_api_1_0_10.xml 612B
Maven__com_dyuproject_protostuff_protostuff_collectionschema_1_0_10.xml 703B
Maven__io_netty_netty_all_5_0_0_Alpha1.xml 551B
Maven__org_objenesis_objenesis_2_4.xml 508B
Maven__com_dyuproject_protostuff_protostuff_runtime_1_0_10.xml 640B
共 52 条
- 1
资源评论
- xmx1112018-02-26不值5币,对我来说完全没有用
- 小帅子帅小子2020-12-09垃圾。。。。。
- IO2017-12-10非常好,学习了
- chenfayong2017-09-06下下来,学习一下。。
u010607014
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功