public class Test4 implements Runnable{
private String nowStr;
private String nextStr;
private MyLock lock;
public Test4(String nowStr,String nextStr,MyLock lock){
this.nowStr= nowStr;
this.nextStr=nextStr;
this.lock = lock;
}
public Test4(){}
public void run() {
int i =0;
while(i<10){
if(lock != null && lock.getStr()!=null &&lock.getStr().equals(nowStr)){
i++;
System.out.print(nowStr);
if(nowStr.equals("C"))
System.out.println();
lock.setStr(nextStr);
}
}
}
public static void main(String[] args) throws InterruptedException {
MyLock lock = new Test4().new MyLock();
lock.setStr("A");
Test4 tha = new Test4("A","B",lock);
Test4 thb = new Test4("B","C",lock);
Test4 thc = new Test4("C","A",lock);
new Thread(tha).start();
new Thread(thb).start();
new Thread(thc).start();
}
class MyLock{
private String str;
public MyLock(){}
public String getStr() {
return str;
}
public void setStr(String str) {
this.str = str;
}
}
}
package thread1;
/**
* @author pangxinhua
* @effect Insert the effect of the file
* @date 2011-3-10 上午10:37:36
*/
public class ThreadTest extends Thread {
private static String str = "A";
private String flag;
private static byte[]b = new byte[0];
public ThreadTest(String flag) {
this.flag = flag;
}
@Override
public void run() {
for (int i = 0; i < 10;) {
//synchronized (this) {
if (flag.equals(str)) {
System.out.print(str);
i++;
if (flag.equals("C")) {
System.out.println();
}
if (flag.equals("A")) {
str = "B";
} else if (flag.equals("B")) {
str = "C";
} else if (flag.equals("C")) {
str = "A";
}
// }
}
}
}
public static void main(String[] args) {
new Thread(new ThreadTest("A")).start();
new Thread(new ThreadTest("B")).start();
new Thread(new ThreadTest("C")).start();
}
}