- package com.yihaomen.mybatis.inter;
- import java.io.IOException;
- public class TestThread {
- public static void main(String[] args) throws IOException {
- final Test obj = new Test();
- new Thread() {
- public void run() {
- obj.m1();
- }
- }.start();
- new Thread() {
- public void run() {
- obj.m2();
- }
- }.start();
- new Thread() {
- public void run() {
- obj.m3();
- }
- }.start();
- }
- }
- class Test {
- static int count;
- volatile int target = 1;
- synchronized void m1() {
- for (int i = 0; i < 10; i++) {
- while (target == 2 || target == 3) {
- try {
- wait();
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
- System.out.println("m1() =" + i);
- target = 2;
- notifyAll();
- }
- }
- synchronized void m2() {
- for (int i = 0; i < 10; i++) {
- while (target == 1 || target == 3) {
- try {
- wait();
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
- System.out.println("m2() =" + i);
- target = 3;
- notifyAll();
- }
- }
- synchronized void m3() {
- for (int i = 0; i < 10; i++) {
- while (target == 1 || target == 2) {
- try {
- wait();
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
- System.out.println("m3() =" + i);
- target = 1;
- notifyAll();
- }
- }
- }
输出结果:
- m1() =0
- m2() =0
- m3() =0
- m1() =1
- m2() =1
- m3() =1
- m1() =2
- m2() =2
- m3() =2
- m1() =3
- m2() =3
- m3() =3
- m1() =4
- m2() =4
- m3() =4
- m1() =5
- m2() =5
- m3() =5
- m1() =6
- m2() =6
- m3() =6
- m1() =7
- m2() =7
- m3() =7
- m1() =8
- m2() =8
- m3() =8
- m1() =9
- m2() =9
- m3() =9
参考:http://www.blogjava.net/santicom/archive/2011/09/02/357783.html