comparison src/treecms/proto/test/TestMultiThread2.java @ 13:3bccd745f2e2

bug fix
author shoshi
date Sun, 29 Aug 2010 12:07:03 +0900
parents
children
comparison
equal deleted inserted replaced
12:c8e31aaac297 13:3bccd745f2e2
1 package treecms.proto.test;
2
3 import java.util.Iterator;
4 import java.util.Random;
5
6 import treecms.proto.api.NodeAPI;
7 import treecms.proto.api.NodeAPITreeBuilder;
8 import treecms.proto.edit.type1.*;
9 import treecms.proto.simple.SimpleNodeAPITreeBuilder;
10
11 public class TestMultiThread2
12 {
13 public static void main(String _arg[]) throws Exception
14 {
15 new TestMultiThread2();
16 }
17
18 public TestMultiThread2() throws Exception
19 {
20 NodeAPITreeBuilder builder = new SimpleNodeAPITreeBuilder();
21 NodeAPI root = builder.getContents();
22 root.setTitle("t");
23
24 NodeAPI child1 = builder.createNode();
25 child1.setTitle("1");
26 NodeAPI child2 = builder.createNode();
27 child2.setTitle("2");
28
29 root.addChild(child1);
30 root.addChild(child2);
31
32 NodeAPI child11 = builder.createNode();
33 child11.setTitle("11");
34 NodeAPI child12 = builder.createNode();
35 child12.setTitle("12");
36
37 child1.addChild(child11);
38 child1.addChild(child12);
39
40 NodeAPI child21 = builder.createNode();
41 child21.setTitle("21");
42
43 child2.addChild(child21);
44
45 Thread th2 = new EditingWorkerThread(root);
46 Thread th3 = new EditingWorkerThread(root);
47
48 th2.start();
49 th3.start();
50
51 th2.join();
52 th3.join();
53
54 PreOrderTreeWalkerRecursive walker = new PreOrderTreeWalkerRecursive(root);
55 String result = "";
56 Iterator<NodeAPI> itr = walker.iterator();
57 while(itr.hasNext()){
58 NodeAPI node = itr.next();
59 result += (node.getTitle() + "\t");
60 }
61 System.out.println(result);
62 }
63
64 class RenderingWorkerThread extends Thread
65 {
66 private NodeAPI m_root;
67
68 public RenderingWorkerThread(NodeAPI _node)
69 {
70 m_root = _node;
71 }
72
73 public void run()
74 {
75 PreOrderTreeWalkerRecursive walker = new PreOrderTreeWalkerRecursive(m_root);
76 for(int i = 0;i < 3;i ++){
77 String result = "";
78 Iterator<NodeAPI> itr = walker.iterator();
79 while(itr.hasNext()){
80 NodeAPI node = itr.next();
81 result += (node.getTitle() + " ");
82 }
83 System.out.println(result);
84 }
85 }
86 }
87
88 class EditingWorkerThread extends Thread
89 {
90 private NodeAPI m_root;
91
92 public EditingWorkerThread(NodeAPI _node)
93 {
94 m_root = _node;
95 }
96 public void run()
97 {
98 NodeAPITreeBuilder builder = new EditableNodeAPITreeBuilder(m_root);
99 PreOrderTreeWalkerRecursive walker = new PreOrderTreeWalkerRecursive(builder.getContents());
100 for(int i = 0;i < 3;i ++){
101 Iterator<NodeAPI> itr = walker.iterator();
102 while(itr.hasNext()){
103 NodeAPI node = itr.next();
104 if((new Random()).nextBoolean()){
105 node.setTitle("edit");
106 }
107 }
108 }
109 //
110 }
111 }
112 }