下面我們舉例看其中 乙個如果我們有定製化需求可以參考實現定製
呼叫時機在解析標籤處 分別呼叫start 和end
/*** 啟動worker
*/public
void
start()
else
if (this.queuesize < 1)
else
this.addinfo("setting discardingthreshold to " + this
.discardingthreshold);
this.worker.setdaemon(true
);
.getname());
//重寫了父類的start 所以保證不破壞父類邏輯 所以呼叫父類start
super
.start();
//this
.worker.start();//這裡是呼叫執行緒的start}}
}
publicvoid
end(interpretationcontext ec, string name)
object o =ec.peekobject();
if (o != this
} else}}
class worker extendsthread
public
void
run()
catch
(interruptedexception var5)
}this.addinfo("worker thread will flush remaining events before exiting. ");
//以下是當started關閉 不接受訊息 但是還是要消費完
iterator i$ =parent.blockingqueue.iterator();
while
(i$.hasnext())
// }
}
publicint
int size = 0;
//
for(int i = 0; i < len; ++i)
return
size;
}
private threadlocalguard = newthreadlocal();
public
void
//防止乙個執行緒同時進入多個吧。。。
if (!boolean.true.equals(this
.guard.get()))
//<5>
模板模式化 由子類實現
this
return
; }
if (this.statusrepeatcount++ < 3)
} catch
(exception var6)
return
; }
finally}}
protected
abstract
protected
void
if (this
.isstarted())
}
protectedvoid
if (this
.isstarted())
//encoder具體檢視
byte bytearray = this
.encoder.encode(event);
this
.writebytes(bytearray);
} catch
(ioexception var3) }}
privatevoid writebytes(byte bytearray) throws
ioexception
} finally}}
logback原始碼閱讀 根據原始碼學擴充套件點 七
原始碼 點選跳轉 1.xml定義 xml version 1.0 encoding utf 8 configuration property name charset value utf 8 name class encoder pattern p d t logger line n m n n p...
《原始碼閱讀》原始碼閱讀技巧,原始碼閱讀工具
檢視某個類的完整繼承關係 選中類的名稱,然後按f4 quick type hierarchy quick type hierarchy可以顯示出類的繼承結構,包括它的父類和子類 supertype hierarchy supertype hierarchy可以顯示出類的繼承和實現結構,包括它的父類和...
原始碼閱讀 Glide原始碼閱讀之with方法(一)
前言 本篇基於4.8.0版本 原始碼閱讀 glide原始碼閱讀之with方法 一 原始碼閱讀 glide原始碼閱讀之load方法 二 原始碼閱讀 glide原始碼閱讀之into方法 三 大多數情況下,我們使用glide 就一句 但是這一句 裡面蘊含著成噸的 with方法有以下幾個過載方法 publi...