synchronized static 和 static synchronize修饰的方法有什么区别?


 public  synchronized static void method() {

        if (ticket > 0) {
            System.out.println(Thread.currentThread().getName() + "正在销售第" + (1001 - ticket) + "张票");
            ticket--;
        }
        if (ticket <= 0) {
            System.out.println(Thread.currentThread().getName() + "票已售完");
        }
}

 public  static synchronized void method() {

        if (ticket > 0) {
            System.out.println(Thread.currentThread().getName() + "正在销售第" + (1001 - ticket) + "张票");
            ticket--;
        }
        if (ticket <= 0) {
            System.out.println(Thread.currentThread().getName() + "票已售完");
        }


请问这两个有区别吗?

就你写的这2个例子 没有任何区别。
就跟 你吃饭了吗 和 吃饭了吗你 一样

没区别
static
synchronized
都只是关键字
前后循序没啥关系~
组合起来就是一个类锁~

我们都知道 staitc 修饰的方法是静态方法,是属于类的,可以通过类名直接调用。那么题中所述的区别就显而易见了:static synchronized 关键字修饰的方法是为类加锁,只要是这个类的对象,调用到这个方法都要加锁。而 synchronized 修饰的方法则是对象级别的,只有同一个对象在多个线程访问这个方法才会加锁。