本帖最后由 张然龙 于 2014-4-29 12:06 编辑
多线程问题, 正常来看两个线程应该锁上一个啊?怎么还是交替执行?
我在创建多线程时传入参数就是Ziyuan这个类的对象,也就是说两个多线程应该同时调用这一个对象Ziyuan,为什么还是锁不上? 我两个在synchronized锁的Object不是同一个对象? 疑惑中。。求各位解答下。。
- class Ziyuan
- {
- Object obj=new Object();
- public void shengchan()
- {
- while(true)
- {
- synchronized(obj)
- {
- System.out.println(Thread.currentThread().getName());
- }
- }
- }
- public void xiaofei()
- {
- while(true)
- {
- synchronized(obj)
- {
- System.out.println(Thread.currentThread().getName());
- }
- }
- }
- }
- class A implements Runnable
- {
- Ziyuan z;
- A(Ziyuan z)
- {
- this.z=z;
- }
- public void run()
- {
- z.shengchan();
- }
- }
- class B implements Runnable
- {
- Ziyuan z;
- B(Ziyuan z)
- {
- this.z=z;
- }
- public void run()
- {
- z.xiaofei();
- }
- }
- class Demo2
- {
- public static void main(String args[])
- {
- Ziyuan z=new Ziyuan();
- A a=new A(z);
- B b=new B(z);
- new Thread(a).start();
- new Thread(b).start();
- }
- }
复制代码
|