您的位置:首页 >> 编程开发 >> Java >> J2SE >> 正文
J2SE RSS
 

Java之多线程(1)

http://www.rdxx.com 05年07月24日 21:14 JR 我要投稿

关键词: 多线程 , Java , 线程

            }
            catch(Exception e)
            {
                System.out.println(e.getMessage());
            }
            System.out.println(name + " trying to call A.last()");
            a.last();
    }
    synchronized void last()
    {
            System.out.println("inside A.last");
    }
}
class Deadlock implements Runnable
{
    A a=new A();
    B b=new B();
    Deadlock()
    {
            //设置当前线程名称
            Thread.currentThread().setName("MainThread");
            new Thread(this).start();
            a.foo(b);       //get lock on a in this thread.
            System.out.println("back in main thread");
    }
    public void run()
    {
            Thread.currentThread().setName("RacingThread");
            b.bar(a);  //get lock on a in other thread.
            System.out.println("back in other thread");
    }
    public static void main(String[] args)
    {
            new Deadlock();
    }
}

    从结果可以看出,RacingThread进入了b的监视器,然后又在等待a的监视器。同时MainThread进入了a的监视器并等待b的监视器。这个程序永远不会完成。


线程间通信
    一个线程向数据存储空间添加数据(生产者),另一个线程从数据存储空间取出数据(消费者)
    这个程序有两种以外需要考虑:
    1、    假设生产者线程刚向数据存储空间添加了一个人的姓名,还没有加入这个人的性别,CPU就切换到了消费者线程,消费者线程将把这个人的姓名和上一个恶人的性别联系到了一起

9 7 3 11 12 13 14 15 16 17 18 19 20 4 8 :


 
 
标签: 多线程 , Java , 线程 打印本文
 
 
  相关资讯
RSS
 
 
 
  热点搜索
 
 
 



Valid XHTML 1.0 Transitional
Copyright ©2005 - 2008 Rdxx.Com,All Rights Reserved
收藏本页
收藏本站