Mercurial > hg > Members > shoshi > TreeCMS > TreeCMSPrototype1
view src/treecms/proto/test/TestMultiThread1.java @ 13:3bccd745f2e2
bug fix
author | shoshi |
---|---|
date | Sun, 29 Aug 2010 12:07:03 +0900 |
parents | c8e31aaac297 |
children |
line wrap: on
line source
package treecms.proto.test; import java.util.Iterator; import java.util.Random; import treecms.proto.api.NodeAPI; import treecms.proto.api.NodeAPITreeBuilder; import treecms.proto.edit.type1.*; import treecms.proto.simple.SimpleNodeAPITreeBuilder; public class TestMultiThread1 { public static void main(String _arg[]) throws Exception { new TestMultiThread1(); } public TestMultiThread1() throws Exception { NodeAPITreeBuilder builder = new SimpleNodeAPITreeBuilder(); NodeAPI root = builder.getContents(); root.setTitle("t"); NodeAPI child1 = builder.createNode(); child1.setTitle("1"); NodeAPI child2 = builder.createNode(); child2.setTitle("2"); root.addChild(child1); root.addChild(child2); NodeAPI child11 = builder.createNode(); child11.setTitle("11"); NodeAPI child12 = builder.createNode(); child12.setTitle("12"); NodeAPI child13 = builder.createNode(); child13.setTitle("13"); child1.addChild(child11); child1.addChild(child12); child1.addChild(child13); NodeAPI child21 = builder.createNode(); child21.setTitle("21"); child2.addChild(child21); NodeAPI child211 = builder.createNode(); child211.setTitle("211"); NodeAPI child212 = builder.createNode(); child212.setTitle("212"); child21.addChild(child211); child21.addChild(child212); Thread th1 = new RenderingWorkerThread(root); Thread th2 = new EditingWorkerThread(root); Thread th3 = new EditingWorkerThread(root); th1.start(); th2.start(); th3.start(); th1.join(); th2.join(); th3.join(); } class RenderingWorkerThread extends Thread { private NodeAPI m_root; public RenderingWorkerThread(NodeAPI _node) { m_root = _node; } public void run() { PreOrderTreeWalker walker = new PreOrderTreeWalker(m_root); for(int i = 0;i < 3;i ++){ String result = ""; Iterator<NodeAPI> itr = walker.iterator(); while(itr.hasNext()){ NodeAPI node = itr.next(); result += (node.getTitle() + " "); } System.out.println(result); } } } class EditingWorkerThread extends Thread { private NodeAPI m_root; public EditingWorkerThread(NodeAPI _node) { m_root = _node; } public void run() { NodeAPITreeBuilder builder = new EditableNodeAPITreeBuilder(m_root); PreOrderTreeWalker walker = new PreOrderTreeWalker(builder.getContents()); for(int i = 0;i < 3;i ++){ Iterator<NodeAPI> itr = walker.iterator(); while(itr.hasNext()){ NodeAPI node = itr.next(); if((new Random()).nextBoolean()){ node.setTitle("edit"); } } } // } } }