2017年1月12日木曜日

Java 线程同步。

Java 线程同步。
要锁定都一个资源。

public class T1 {

        public static void main(String[] args) {
                // TODO Auto-generated method stub
                TX re = new TX();
                T2 t2 = new T2(re);
                Thread t = new Thread(t2);
                t.start();

                T3 t3 = new T3(re);
                Thread tt = new Thread(t3);
                tt.start();
        }
}

class TX {
        public String name;
        public String sex;
}

class T2 implements Runnable {
        private TX r;

        public T2(TX r) {
                this.r = r;
        }

        @Override
        public void run() {
                // TODO Auto-generated method stub
                int i = 0;
                while (true) {
                        synchronized (r) {
                                if (i == 0) {
                                        r.name = "AAAA";
                                        r.sex = "FFFFF";
                                } else {
                                        r.name = "BBB";
                                        r.sex = "mmmmmmmmmmmmmmmmmmmm";
                                }
                        }
                        i = (i + 1) % 2;
                }
        }
}

class T3 implements Runnable {
        private TX r;

        public T3(TX r) {
                this.r = r;
        }

        @Override
        public void run() {
                // TODO Auto-generated method stub
                while (true) {
                        synchronized (r) {
                                System.out.println(r.name + "---------" + r.sex);
                        }
                }
        }
}

0 件のコメント: