其他分享
首页 > 其他分享> > 同步方法-静态同步方法

同步方法-静态同步方法

作者:互联网

同步方法

同步方法:使用synchronized修饰的方法,就叫做同步方法,保证A线程执行该方法的时候,其他线程只能在方法外等着。

格式:

public class Test {
    public synchronized void method(){
//        可能回产生线程安全问题的代码
    }
}
package Demo01.Sychronized;

public class RunnableImpl implements  Runnable{
    //定义一个多线程共享的票源
    private  int ticket =100;

    //创建一个锁对象
    Object object=new Object();
    //设置线程任务:卖票
    @Override
    public void run() {
        //使用死循环,让卖票操作重复执行
        while(true){
          payTicket();
        }
    }
//    定义一个同步方法
    public synchronized void payTicket(){
        //先判断票是否存在
        if (ticket>0){
            //提高安全问题出现的概率,让程序睡眠
            try {
                Thread.sleep(10);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            //票存在,卖票 ticket--
            System.out.println(Thread.currentThread().getName()+"正在卖第"+ticket+"张票");
            ticket--;
        }
    }

}

 

静态同步方法

静态的同步方法

锁对象是谁?

不能this

this是创建对象之后产生的,静态方法优先于对象

静态方法的锁对象是本类的class属性-->文件对象(反射)

 

/    定义一个同步方法
    public static void payTicket() {
        synchronized (RunnableImpl.class) {
            //先判断票是否存在
            if (ticket > 0) {
                //提高安全问题出现的概率,让程序睡眠
                try {
                    Thread.sleep(10);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                //票存在,卖票 ticket--
                System.out.println(Thread.currentThread().getName() + "正在卖第" + ticket + "张票");
                ticket--;
            }
        }
    }
}

 

标签:同步,Thread,静态,--,ticket,方法,public
来源: https://www.cnblogs.com/leijia/p/16456179.html