Java syncronized 线程同步

Java syncronized 线程同步,第1张

Java syncronized 线程同步
对于线程安全问题,是由于线程对内存、数据的共享引发,采用synchronized关键字标记针对共享资源的 *** 作;同步方法、同步块。
同步代码块:

格式:

synchronized (object) {代码块} 
public class SynBlockThread {
    public static void main(String [] args)
    {
        SynSellThread t=new SynSellThread();
        new Thread(t).start();
        new Thread(t).start();
        new Thread(t).start();
        new Thread(t).start();
    }//end main
}
class SynSellThread implements Runnable
{
    private int tickets=100;
    String str= "";
    public void run()
    {
        while(true)
        {
            try {
                Thread.sleep(50);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            synchronized(str)
            {
                if(tickets>0)
                {
                    String result=Thread.currentThread().getName()+" is selling ticket "+tickets;
                    System.out.println(result);
                    tickets--;
                }
            }//end synchronized
        }//end while
    }//end run
}//end class
同步方法

格式:

[访问修饰符] synchronized  返回类型  方法名(参数表) {方法体}
public class SynMethodThread {
    public static void main(String [] args)
    {
        SynMethodSellThread t=new SynMethodSellThread();
        new Thread(t).start();
        new Thread(t).start();
        new Thread(t).start();
        new Thread(t).start();
    }//end main
}
class SynMethodSellThread implements Runnable
{
    private int tickets=100;
    public void run()
    {
        while(true)
        {
            try {
                Thread.sleep(50);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            sale();
        }
    }//end run
    public  synchronized   void sale()
    {
        if(tickets>0)
        {
            String result=Thread.currentThread().getName()+" is selling ticket "+tickets;
            System.out.println(result);
            tickets--;
        }
    }//end sale
}//end class

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5573693.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-14
下一篇 2022-12-14

发表评论

登录后才能评论

评论列表(0条)

保存