黑马程序员技术交流社区

标题: 多线程同一把锁的问题 [打印本页]

作者: Mr_Unhappy    时间: 2014-9-24 16:00
标题: 多线程同一把锁的问题
  1. package threadTest;

  2. public class ThreadDemo {
  3.         public static void main(String[] args) {
  4.                
  5.                 MaiPiao t = new MaiPiao();
  6.                 Thread first = new Thread(t, "one");
  7.                 Thread secound = new Thread(t, "two");
  8.                 first.start();
  9.                 secound.start();
  10.         }
  11. }


  12. class MaiPiao implements Runnable{

  13.         private int piao = 100;
  14.         public void run() {
  15.                 synchronized(new Object()){
  16.                         while(piao>0){
  17.                                 System.out.println(Thread.currentThread().getName()+" is running"+piao--);
  18.                                 }
  19.                 }
  20.         }
  21. }
复制代码



此时两个线程用的不是同一把锁,因为每个线程运行 new object时,都会创建一个对象,所以每个线程都有自己的锁
此时纵使换成同一把锁,依然会出现错误,因为while循环在同步代码块之内,所以当一个线程进入同步代码块之后,就不会再出来...


以此警醒自己,考前复习
作者: jtshawn    时间: 2014-9-24 17:21
路过赞一个!
作者: Eagle    时间: 2014-9-24 19:43
break????




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