Mercurial > hg > Members > shoshi > TreeCMS > TreeCMSPrototype1
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 } |