| 构造器和说明 |
|---|
ConcurrentLinkedQueuePrinter(PrintWriter writer)
|
ConcurrentLinkedQueuePrinter(PrintWriter writer,
long delayStepTimeMs,
long delayMaxTimeMs,
int capacity)
构造文本输出
|
| 限定符和类型 | 方法和说明 |
|---|---|
Printer |
broken()
|
void |
close()
关闭输出
|
Printer |
flush()
刷盘
|
boolean |
isBroken()
是否已经被打断
|
Printer |
print(String string)
输出文本
|
Printer |
println(String string)
输出文本
|
Printer |
waitingForBroken()
挂起当前线程,等待被打断
线程挂起等待输出被打断
因为HTTP请求是短连接,所以这里为了避免线程立即返回,可以使用这个方法来阻塞当前Http请求响应线程,直至阻塞被中断
被打断过的请求无法再次被挂起等待,当曾经被调用过
Printer.broken()之后,再次调用本方法将无法阻塞当前线程
有两种场景会打断本次挂起,任何以下场景都能结束并唤醒当前被阻塞的线程
网络I/O被中断
Printer.broken()被调用
Thread.interrupt()被调用
|
boolean |
waitingForBroken(long time,
TimeUnit unit)
挂起当前线程,等待被打断或超时
Printer.waitingForBroken() |
public ConcurrentLinkedQueuePrinter(PrintWriter writer, long delayStepTimeMs, long delayMaxTimeMs, int capacity)
writer - PrintWriterdelayStepTimeMs - 轮空延时步长(单位毫秒)
Printer会每隔这个时间间隔检查是否有输出,如果没有任何输出则会延时累加,
整体累加延时不会超过delayMaxTimeMsdelayMaxTimeMs - 最大轮空延时capacity - 队列最大容量
超过最大容量的输入将会被主动丢弃public ConcurrentLinkedQueuePrinter(PrintWriter writer)
delayStepTimeMs=20delayMaxTimeMs=200Integer.MAX_VALUEwriter - PrintWriterpublic Printer waitingForBroken()
Printer线程挂起等待输出被打断
因为HTTP请求是短连接,所以这里为了避免线程立即返回,可以使用这个方法来阻塞当前Http请求响应线程,直至阻塞被中断
被打断过的请求无法再次被挂起等待,当曾经被调用过Printer.broken()之后,再次调用本方法将无法阻塞当前线程
Printer.broken()被调用Thread.interrupt()被调用waitingForBroken 在接口中 Printerpublic boolean waitingForBroken(long time,
TimeUnit unit)
PrinterPrinter.waitingForBroken()waitingForBroken 在接口中 Printertime - 超时时间unit - 超时时间单位public boolean isBroken()
PrinterisBroken 在接口中 PrinterPrinter.waitingForBroken()挂起Copyright © 2018 Alibaba Open Source. All rights reserved.