一、final修饰符
二、static修饰符
三、abstract修饰符
四、访问修饰符
五、synchronized修饰符
采用synchronized修饰符实现的同步机制也叫做互斥锁机制,它所获得的锁叫做互斥锁。
当多个线程去操作同一个数据时可能会出现数据混乱的问题,如何处理?? ==》同步原理
1.同步方法:
(1)普通成员方法:synchronized 修饰的方法 ex:public synchronized void test(){}
锁对象,默认是this(也就是当前类对象)
(2)静态成员方法:static synchronized 修饰的方法 ex:public static synchronized void test() {}
锁对象,默认是类的.class对象(也就是类的字节码对象)
2.同步代码块:
synchronized(锁对象){}
弊端:方法中的所有代码,都只允许一个线程访问。
六、这些修饰符哪些是不可以两两组合
(1)final、abstract:abstract修饰的类都是不能使用new关键字获取实例对象的类,修饰的方法都是没有方法体未实现的方法,而final修饰的类是不允许被继承的类,修饰的方法是不能被重写的方法,可以看出final和abstract修饰符一个是阻止继承一个是希望被继承,是两个对立的修饰符,所以这两个肯定是不可以组合的。
(2)abstract、synchronized:abstract修饰的方法没有方法体,sychronized则表示的是一个同步代码块,所以这两者也不能组合。
(3)static、abstract:static修饰的属性和方法是属于类的,而且是不能被子类给继承的,如果父类和子类都有一个同名的static修饰的方法,并不表示子类重写父类的方法,而是子类所特有的方法。
abstract修饰的类和方法主要是为了让子类去实现和继承,所以这两个修饰符也不能放在一起用。