A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© Mr_Unhappy 中级黑马   /  2014-9-24 16:00  /  824 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  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循环在同步代码块之内,所以当一个线程进入同步代码块之后,就不会再出来...


以此警醒自己,考前复习

2 个回复

倒序浏览
路过赞一个!
回复 使用道具 举报
break????
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马