码迷,mamicode.com
首页 > 编程语言 > 详细

多线程(1_锁的认识_2_死锁分析)

时间:2014-12-08 12:03:01      阅读:206      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   io   ar   color   使用   sp   on   

我们创建4个线程,与之前不同的是,同时使用了同步函数和同步代码快。看看结果如何

class Mlpc implements Runnable
{
    private int ticket = 550;
    public boolean flag = true;
    Object obj = new Object();
    public void run() 
    {
        if(flag == true)
        {
            while(true)
            {
                synchronized (obj)
                {
                    if(ticket>0)
                    {
                        if(ticket>0)
                        {    
                            try
                            {
                                Thread.sleep(20);
                            }
                            catch (Exception e)
                            {
                            }
                            System.out.println(Thread.currentThread()+" show "+ticket--);
                        } 
                    }
                }
            }
        }
        else
        {
            while(true)
            {
                show();
            }
        }

    }
    public synchronized void show()
    {
        
            if(ticket>0)
            {    
                try
                {
                    Thread.sleep(20);
                }
                catch (Exception e)
                {
                }
                System.out.println(Thread.currentThread()+" show "+ticket--);
            } 
        
        
    }
}

 class mlpcDemo 
{
    public static void main(String[] args) 
    {
        
        
        Mlpc m = new Mlpc();
        Thread th0 = new Thread(m);
        Thread th1 = new Thread(m);
        Thread th2 = new Thread(m);
        Thread th3 = new Thread(m);

        th0.start();
        try
        {
            Thread.sleep(20);    
        }
        catch (Exception e)
        {
        }
        m.flag = false;
        th1.start();
        th2.start();
        th3.start();
    }
}

 结果出现了票数为0。

bubuko.com,布布扣

 

 public void run() 
    {
        if(flag == true)
        {
            while(true)
            {
               synchronized (this) //从原本的任意对象改为函数自己所属的对象this
{ if(ticket>0) { try { Thread.sleep(20); } catch (Exception e) { } System.out.println(Thread.currentThread()+" show "+ticket--); } } } } else { while(true) { show(); } } }

bubuko.com,布布扣

多线程(1_锁的认识_2_死锁分析)

标签:style   blog   http   io   ar   color   使用   sp   on   

原文地址:http://www.cnblogs.com/tozr/p/4150570.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!