changeset 4:671a67571a48

fixed WriteThread
author one
date Thu, 06 Mar 2014 05:08:24 +0900
parents 37aab24020a0
children 24fca21a576e
files .settings/org.eclipse.m2e.core.prefs src/main/java/example/SimplejungleMalti.java src/main/java/example/WriteThread.java
diffstat 3 files changed, 70 insertions(+), 62 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/.settings/org.eclipse.m2e.core.prefs	Thu Mar 06 05:08:24 2014 +0900
@@ -0,0 +1,5 @@
+#Tue Mar 04 00:33:07 JST 2014
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
--- a/src/main/java/example/SimplejungleMalti.java	Thu Mar 06 04:17:40 2014 +0900
+++ b/src/main/java/example/SimplejungleMalti.java	Thu Mar 06 05:08:24 2014 +0900
@@ -19,71 +19,76 @@
 public class SimplejungleMalti extends Thread {
 	public static final String key = "name";
 	public static final String valueString = "kanagawsa";
-	public static final ByteBuffer value = ByteBuffer.wrap(valueString.getBytes());
+	public static final ByteBuffer value = ByteBuffer.wrap(valueString
+			.getBytes());
 
 	public static void main(String[] args) {
 		System.out.println(args[0]);
 		System.out.println(args[1]);
-		int roopCount  =  Integer.parseInt(args[0]);
+		int roopCount = Integer.parseInt(args[0]);
 		int threadCount = Integer.parseInt(args[1]);
 		WriteThread[] wt = new WriteThread[threadCount];
-		Jungle j = new DefaultJungle(null,"hogehoge",new DefaultTreeEditor(new DefaultTraverser()));
-		j.createNewTree("tree");//木を作った
-		JungleTree tree = j.getTreeByName("tree");//名前を取得
-		JungleTreeEditor editor1 = tree.getTreeEditor();//editorの取得
-		DefaultNodePath root = new DefaultNodePath();//パスの取得
-		
-		//eitherに値を入れる
-		Either<Error,JungleTreeEditor> either = editor1.putAttribute(root,key,value);
-		if(either.isA()){//失敗した場合Aが出てくる
+		Jungle j = new DefaultJungle(null, "hogehoge", new DefaultTreeEditor(
+				new DefaultTraverser()));
+		j.createNewTree("tree");// 木を作った
+		JungleTree tree = j.getTreeByName("tree");// 名前を取得
+		JungleTreeEditor editor1 = tree.getTreeEditor();// editorの取得
+		NodePath root = new DefaultNodePath();// パスの取得
+
+		// eitherに値を入れる
+		Either<Error, JungleTreeEditor> either = editor1.putAttribute(root,
+				key, value);
+		if (either.isA()) {// 失敗した場合Aが出てくる
 			Assert.fail();
 		}
 		editor1 = either.b();
 		editor1.success();
-		//ここで初めてSUCCESS
-		
+		// ここで初めてSUCCESS
+
 		Node node = tree.getRootNode();
 		ByteBuffer v = node.getAttributes().get(key);
 		System.out.println(new String(v.array()));
-		
-		//------以下子ノードの値変更
-		editor1 = tree.getTreeEditor();//Treeのeditorを作成
-		either = editor1.addNewChildAt(root,0);//新しく入れるところへのパス
-		if(either.isA()){//ちゃんとパスを指定できたかチェック
+
+		// ------以下子ノードの値変更
+		editor1 = tree.getTreeEditor();// Treeのeditorを作成
+		either = editor1.addNewChildAt(root, 0);// 新しく入れるところへのパス
+		if (either.isA()) {// ちゃんとパスを指定できたかチェック
 			Assert.fail();
 		}
-		editor1 = either.b();//成功した場合パスを入れる
+		editor1 = either.b();// 成功した場合パスを入れる
 		NodePath childPath = root.add(0);
 		either = editor1.success();
-		
-		//そしてここで子ノードに値を入れる
-		
-		long t1 = System.currentTimeMillis();//時間の測定開始
-		
-		for(int count = 0 ; count < threadCount ; count++){
-		wt[count] = new WriteThread(j,childPath ,(roopCount/threadCount),count);
+		if (either.isA()) {// ちゃんとパスを指定できたかチェック
+			Assert.fail();
+		}
+		// そしてここで子ノードに値を入れる
+
+		long t1 = System.currentTimeMillis();// 時間の測定開始
+		for (int count = 0; count < threadCount; count++) {
+			wt[count] = new WriteThread(j, childPath,
+					(roopCount / threadCount), count);
 		}
-		
-		for(int count = 0 ; count < threadCount ; count++){
-		wt[count].start();
+		for (int count = 0; count < threadCount; count++) {
+			wt[count].start();
 		}
-	
-		for(int count = 0 ; count < threadCount ; count++){
-			try{
+
+		for (int count = 0; count < threadCount; count++) {
+			try {
 				wt[count].join();
-			}catch(InterruptedException e){}
+			} catch (InterruptedException e) {
+			}
 		}
-		
+
 		long t2 = System.currentTimeMillis();
-		System.out.println(t2-t1);
-		
+		System.out.println(t2 - t1 + "s");
+
 		node = tree.getRootNode();
 		Children<Node> children = node.getChildren();
-		Either<Error,Node> either2 = children.at(0);
-		if(either2.isA()){
+		Either<Error, Node> either2 = children.at(0);
+		if (either2.isA()) {
 			Assert.fail();
 		}
-		
+
 		Node childNode = either2.b();
 		ByteBuffer v2 = childNode.getAttributes().get(key);
 		System.out.println(new String(v2.array()));
--- a/src/main/java/example/WriteThread.java	Thu Mar 06 04:17:40 2014 +0900
+++ b/src/main/java/example/WriteThread.java	Thu Mar 06 05:08:24 2014 +0900
@@ -6,23 +6,20 @@
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTree;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTreeEditor;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultNodePath;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
 import junit.framework.Assert;
 
 public class WriteThread extends Thread {
 	public static final String key = "name";
-	public   String valueString = "tatsuki";
-	public   ByteBuffer value = ByteBuffer.wrap(valueString.getBytes());
-	Either<Error,JungleTreeEditor> either;
-	JungleTreeEditor editor;
-	JungleTree tree;
+	public String valueString = "tatsuki";
+	public ByteBuffer value = ByteBuffer.wrap(valueString.getBytes());
 	Jungle j;
 	NodePath childPath;
 	int roopCount;
 	int num;
-	WriteThread(Jungle j,NodePath childPath , int roopCount , int num) {
+
+	WriteThread(Jungle j, NodePath childPath, int roopCount, int num) {
 		this.num = num;
 		this.valueString = this.valueString + Integer.toString(num);
 		this.value = ByteBuffer.wrap(valueString.getBytes());
@@ -30,24 +27,25 @@
 		this.j = j;
 		this.childPath = childPath;
 	}
-	
-public void run() {
-	tree = j.getTreeByName("tree");//名前を取得
-	editor = tree.getTreeEditor();//Treeのeditorを作成
-	long t1 = System.currentTimeMillis();//時間の測定開始
-	
-	for(int count = 0 ; count < roopCount ; count++){
-		do{
-			either = editor.putAttribute(childPath,key,value);
-			if(either.isA()){
-				Assert.fail();
-			}	
-			editor = either.b();
-			either = editor.success();	
+
+	public void run() {
+		JungleTree tree = j.getTreeByName("tree");// 名前を取得
+		Either<Error, JungleTreeEditor> either;
+		System.out.println("roopCount = " + roopCount);
+		long t1 = System.currentTimeMillis();// 時間の測定開始
+
+		for (int count = 0; count < roopCount; count++) {
+			do{
+				JungleTreeEditor editor = tree.getTreeEditor();// Treeのeditorを作成
+				either = editor.putAttribute(childPath, key, value);
+				if (either.isA()) {
+					Assert.fail();
+				}
+				editor = either.b();
+				either = editor.success();
 			}while(either.isA());
 		}
 		long t2 = System.currentTimeMillis();
-		System.out.println(num + "番目終わり" + (t2-t1) +"秒");
+		System.out.println(num + "番目終わり" + (t2 - t1) + "秒");
 	}
 }
-