diff --git a/JavaMultiThreadInAction/src/data/ch4case02/InputFiles.zip b/JavaMultiThreadInAction/src/data/ch4case02/InputFiles.zip
new file mode 100644
index 0000000..4aa8617
Binary files /dev/null and b/JavaMultiThreadInAction/src/data/ch4case02/InputFiles.zip differ
diff --git a/JavaMultiThreadInAction/src/data/ch4case02/Readme.txt b/JavaMultiThreadInAction/src/data/ch4case02/Readme.txt
new file mode 100644
index 0000000..b69db5b
--- /dev/null
+++ b/JavaMultiThreadInAction/src/data/ch4case02/Readme.txt
@@ -0,0 +1,5 @@
+运行程序前请先将InputFiles.zip解压缩到该文件所在的目录。
+
+运行程序的示例命令:
+
+java -Xms96m -Xmx128m -XX:NewSize=64m -XX:SurvivorRatio=32 -Dx.stat.task=io.github.viscent.mtia.ch4.case02.MultithreadedStatTask -Dx.input.buffer=8192 -Dx.block.size=2000 io.github.viscent.mtia.ch4.case02.CaseRunner4_2
diff --git a/JavaMultiThreadInAction/src/data/ch4case02/in.dat b/JavaMultiThreadInAction/src/data/ch4case02/in.dat
new file mode 100644
index 0000000..f82e44a
--- /dev/null
+++ b/JavaMultiThreadInAction/src/data/ch4case02/in.dat
@@ -0,0 +1,217 @@
+ESB_interface_201603300847.log
+ESB_interface_201603300848.log
+ESB_interface_201603300849.log
+ESB_interface_201603300850.log
+ESB_interface_201603300851.log
+ESB_interface_201603300852.log
+ESB_interface_201603300853.log
+ESB_interface_201603300854.log
+ESB_interface_201603300855.log
+ESB_interface_201603300856.log
+ESB_interface_201603300857.log
+ESB_interface_201603300858.log
+ESB_interface_201603300859.log
+ESB_interface_201603300900.log
+ESB_interface_201603300901.log
+ESB_interface_201603300902.log
+ESB_interface_201603300903.log
+ESB_interface_201603300904.log
+ESB_interface_201603300905.log
+ESB_interface_201603300906.log
+ESB_interface_201603300907.log
+ESB_interface_201603300908.log
+ESB_interface_201603300909.log
+ESB_interface_201603300910.log
+ESB_interface_201603300911.log
+ESB_interface_201603300912.log
+ESB_interface_201603300913.log
+ESB_interface_201603300914.log
+ESB_interface_201603300915.log
+ESB_interface_201603300916.log
+ESB_interface_201603300917.log
+ESB_interface_201603300918.log
+ESB_interface_201603300919.log
+ESB_interface_201603300920.log
+ESB_interface_201603300921.log
+ESB_interface_201603300922.log
+ESB_interface_201603300923.log
+ESB_interface_201603300924.log
+ESB_interface_201603300925.log
+ESB_interface_201603300926.log
+ESB_interface_201603300927.log
+ESB_interface_201603300928.log
+ESB_interface_201603300929.log
+ESB_interface_201603300930.log
+ESB_interface_201603300931.log
+ESB_interface_201603300932.log
+ESB_interface_201603300933.log
+ESB_interface_201603300934.log
+ESB_interface_201603300935.log
+ESB_interface_201603300936.log
+ESB_interface_201603300937.log
+ESB_interface_201603300938.log
+ESB_interface_201603300939.log
+ESB_interface_201603300940.log
+ESB_interface_201603300941.log
+ESB_interface_201603300942.log
+ESB_interface_201603300943.log
+ESB_interface_201603300944.log
+ESB_interface_201603300945.log
+ESB_interface_201603300946.log
+ESB_interface_201603300947.log
+ESB_interface_201603300948.log
+ESB_interface_201603300949.log
+ESB_interface_201603300950.log
+ESB_interface_201603300951.log
+ESB_interface_201603300952.log
+ESB_interface_201603300953.log
+ESB_interface_201603300954.log
+ESB_interface_201603300955.log
+ESB_interface_201603300956.log
+ESB_interface_201603300957.log
+ESB_interface_201603300958.log
+ESB_interface_201603300959.log
+ESB_interface_201603301000.log
+ESB_interface_201603301001.log
+ESB_interface_201603301002.log
+ESB_interface_201603301003.log
+ESB_interface_201603301004.log
+ESB_interface_201603301005.log
+ESB_interface_201603301006.log
+ESB_interface_201603301007.log
+ESB_interface_201603301008.log
+ESB_interface_201603301009.log
+ESB_interface_201603301010.log
+ESB_interface_201603301011.log
+ESB_interface_201603301012.log
+ESB_interface_201603301013.log
+ESB_interface_201603301014.log
+ESB_interface_201603301015.log
+ESB_interface_201603301016.log
+ESB_interface_201603301017.log
+ESB_interface_201603301018.log
+ESB_interface_201603301019.log
+ESB_interface_201603301020.log
+ESB_interface_201603301021.log
+ESB_interface_201603301022.log
+ESB_interface_201603301023.log
+ESB_interface_201603301024.log
+ESB_interface_201603301025.log
+ESB_interface_201603301026.log
+ESB_interface_201603301027.log
+ESB_interface_201603301028.log
+ESB_interface_201603301029.log
+ESB_interface_201603301030.log
+ESB_interface_201603301031.log
+ESB_interface_201603301032.log
+ESB_interface_201603301033.log
+ESB_interface_201603301034.log
+ESB_interface_201603301035.log
+ESB_interface_201603301036.log
+ESB_interface_201603301037.log
+ESB_interface_201603301038.log
+ESB_interface_201603301039.log
+ESB_interface_201603301040.log
+ESB_interface_201603301041.log
+ESB_interface_201603301042.log
+ESB_interface_201603301043.log
+ESB_interface_201603301044.log
+ESB_interface_201603301045.log
+ESB_interface_201603301046.log
+ESB_interface_201603301047.log
+ESB_interface_201603301048.log
+ESB_interface_201603301049.log
+ESB_interface_201603301050.log
+ESB_interface_201603301051.log
+ESB_interface_201603301052.log
+ESB_interface_201603301053.log
+ESB_interface_201603301054.log
+ESB_interface_201603301055.log
+ESB_interface_201603301056.log
+ESB_interface_201603301057.log
+ESB_interface_201603301058.log
+ESB_interface_201603301059.log
+ESB_interface_201603301100.log
+ESB_interface_201603301101.log
+ESB_interface_201603301102.log
+ESB_interface_201603301103.log
+ESB_interface_201603301104.log
+ESB_interface_201603301105.log
+ESB_interface_201603301106.log
+ESB_interface_201603301107.log
+ESB_interface_201603301108.log
+ESB_interface_201603301109.log
+ESB_interface_201603301110.log
+ESB_interface_201603301111.log
+ESB_interface_201603301112.log
+ESB_interface_201603301113.log
+ESB_interface_201603301114.log
+ESB_interface_201603301115.log
+ESB_interface_201603301116.log
+ESB_interface_201603301117.log
+ESB_interface_201603301118.log
+ESB_interface_201603301119.log
+ESB_interface_201603301120.log
+ESB_interface_201603301121.log
+ESB_interface_201603301122.log
+ESB_interface_201603301123.log
+ESB_interface_201603301124.log
+ESB_interface_201603301125.log
+ESB_interface_201603301126.log
+ESB_interface_201603301127.log
+ESB_interface_201603301128.log
+ESB_interface_201603301129.log
+ESB_interface_201603301130.log
+ESB_interface_201603301131.log
+ESB_interface_201603301132.log
+ESB_interface_201603301133.log
+ESB_interface_201603301134.log
+ESB_interface_201603301135.log
+ESB_interface_201603301136.log
+ESB_interface_201603301137.log
+ESB_interface_201603301138.log
+ESB_interface_201603301139.log
+ESB_interface_201603301140.log
+ESB_interface_201603301141.log
+ESB_interface_201603301142.log
+ESB_interface_201603301143.log
+ESB_interface_201603301144.log
+ESB_interface_201603301145.log
+ESB_interface_201603301146.log
+ESB_interface_201603301147.log
+ESB_interface_201603301148.log
+ESB_interface_201603301149.log
+ESB_interface_201603301150.log
+ESB_interface_201603301151.log
+ESB_interface_201603301152.log
+ESB_interface_201603301153.log
+ESB_interface_201603301154.log
+ESB_interface_201603301155.log
+ESB_interface_201603301156.log
+ESB_interface_201603301157.log
+ESB_interface_201603301158.log
+ESB_interface_201603301159.log
+ESB_interface_201603301200.log
+ESB_interface_201603301201.log
+ESB_interface_201603301202.log
+ESB_interface_201603301203.log
+ESB_interface_201603301204.log
+ESB_interface_201603301205.log
+ESB_interface_201603301206.log
+ESB_interface_201603301207.log
+ESB_interface_201603301208.log
+ESB_interface_201603301209.log
+ESB_interface_201603301210.log
+ESB_interface_201603301211.log
+ESB_interface_201603301212.log
+ESB_interface_201603301213.log
+ESB_interface_201603301214.log
+ESB_interface_201603301215.log
+ESB_interface_201603301216.log
+ESB_interface_201603301217.log
+ESB_interface_201603301218.log
+ESB_interface_201603301219.log
+ESB_interface_201603301220.log
+ESB_interface_201603301221.log
+ESB_interface_201603301222.log
+ESB_interface_201603301223.log
diff --git a/JavaMultiThreadInAction/src/io/github/viscent/mtia/ch4/case02/CaseRunner4_2.java b/JavaMultiThreadInAction/src/io/github/viscent/mtia/ch4/case02/CaseRunner4_2.java
index 995a8f7..513b7c2 100644
--- a/JavaMultiThreadInAction/src/io/github/viscent/mtia/ch4/case02/CaseRunner4_2.java
+++ b/JavaMultiThreadInAction/src/io/github/viscent/mtia/ch4/case02/CaseRunner4_2.java
@@ -9,15 +9,12 @@
本代码可以从以下网址下载:
https://github.com/Viscent/javamtia
http://www.broadview.com.cn/31065
-*/
+ */
package io.github.viscent.mtia.ch4.case02;
import io.github.viscent.mtia.util.AppWrapper;
import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
@@ -27,22 +24,18 @@
import java.util.concurrent.atomic.AtomicBoolean;
/**
- *
- 参考命令如下。其中,JVM系统属性x.std.in的值需要根据实际情况修改,将其修改为每行包含一个接口日志文件名的文本文件。
+ * 运行程序前请先解压缩数据文件: src/data/ch4case02/InputFiles.zip。
+ * 参考命令如下。
* java -Xms96m -Xmx128m -XX:NewSize=64m -XX:SurvivorRatio=32
- * -Dx.std.in="/tmp/in.dat"
- * -Dx.stat.task=io.github.viscent.mtia.ch4.case02.MultithreadedStatTask
- * -Dx.input.buffer=8192 -Dx.block.size=2000
- * io.github.viscent.mtia.ch4.case02.CaseRunner
+ * -Dx.stat.task=io.github.viscent.mtia.ch4.case02.MultithreadedStatTask -Dx.input.buffer=8192
+ * -Dx.block.size=2000 io.github.viscent.mtia.ch4.case02.CaseRunner4_2
*
* @author Viscent Huang
*/
public class CaseRunner4_2 {
- // 日志文件所在目录
- private static final String LOG_BASE_DIR = "/home/viscent/tmp/tps/";
public static void main(String[] args) throws Exception {
- AppWrapper.invokeMain0(CaseRunner4_2.class, args, true);
+ AppWrapper.invokeMain0(CaseRunner4_2.class, args, false);
}
public static void main0(String[] args) throws Exception {
@@ -93,8 +86,10 @@ private static Runnable createTask(InputStream in, int sampleInterval,
private static InputStream createInputStream() {
final AtomicBoolean readerClosed = new AtomicBoolean(false);
+ InputStream dataIn = CaseRunner4_2.class
+ .getResourceAsStream("/data/ch4case02/in.dat");
final BufferedReader bfr = new BufferedReader(new InputStreamReader(
- System.in)) {
+ dataIn)) {
@Override
public void close() throws IOException {
super.close();
@@ -127,8 +122,9 @@ public InputStream nextElement() {
InputStream in = null;
if (null != fileName) {
try {
- in = new FileInputStream(new File(LOG_BASE_DIR + fileName));
- } catch (FileNotFoundException e) {
+ in = CaseRunner4_2.class.getResourceAsStream("/data/ch4case02/"
+ + fileName);
+ } catch (Exception e) {
e.printStackTrace();
}
}