为了账号安全,请及时绑定邮箱和手机立即绑定

java怎么同步代码块

java怎么同步代码块

fenkapian 2018-03-14 09:15:23
package sync.method;class PrintCH {    public static void print(char c) {        for (int i = 0; i < 4; i++) {            System.out.print(c);            try {                Thread.sleep(1000);            } catch (InterruptedException e) {                e.printStackTrace();            }        }    }}public class SyncMassExample extends Thread {    public char c;    public /*static*/ PrintCH printCH = new PrintCH();    ///    public SyncMassExample(char c) {        this.c = c;    }    public void run() {        synchronized (printCH) {            PrintCH.print(c);        }    }    public static void main(String[] args) {        SyncMassExample s1 = new SyncMassExample('a');        SyncMassExample s2 = new SyncMassExample('b');        s1.start();        s2.start();    }}为什么同步代码块后的对象的应用得是静态的  就是我注释的那里  去掉static关键字 输出内容就乱了 交替输出a b
查看完整描述

1 回答

?
习惯受伤

TA贡献885条经验 获得超1144个赞

在这里 synchronized 关键字多余,你这是两个线程输出,s1线程和s2线程是开始执行时间不不一定,所以会乱。你应该让两个线程join,如:
s1.join();
s2.join();

查看完整回答
1 反对 回复 2018-03-14
  • 1 回答
  • 0 关注
  • 952 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信