黑马程序员技术交流社区

标题: 为什么我加了同步代码块 还是执行3个? [打印本页]

作者: a1ccwt    时间: 2015-8-25 14:39
标题: 为什么我加了同步代码块 还是执行3个?
  1. class lianxi5
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 fu c = new fu();
  6.                 Thread t1=new Thread(c);
  7.                 Thread t2=new Thread(c);
  8.                 Thread t3=new Thread(c);
  9.                 t1.start();
  10.                 t2.start();
  11.                 t3.start();
  12.         }
  13. }

  14. class fu implements Runnable
  15. {
  16.         Object s = new Object();
  17.    private int x=100;
  18.    public void run()
  19.         {
  20.        synchronized(s)
  21.                 {
  22.                  for (int y=0;y<x ;y++ )
  23.         {
  24.                        
  25.            System.out.println("x"+y);
  26.          }
  27.                 }
  28.    }
  29. }
复制代码

作者: ln0491    时间: 2015-8-25 18:07
s,没有具体的作用了,不太了解
作者: liuch111    时间: 2015-8-25 18:37
什么意思? 你的需求到底什么呢
你三个线程 当然执行3个了

同步代码保证他们一个一个的去执行
作者: a1ccwt    时间: 2015-8-25 20:15
liuch111 发表于 2015-8-25 18:37
什么意思? 你的需求到底什么呢
你三个线程 当然执行3个了

是我理解错了, 已经了解。
作者: 腹黑兔    时间: 2015-8-26 12:31
y应该在同步代码块之外进行初始化, 否则每进一次同步代码块就会被初始化一次, 对线程来说是3个不同的y




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2