接上篇《1、基本语法》
二、类的成员方法修饰符
1、方法修饰符的作用:控制对成员方法的访问。
2、八种方法的修饰符:public、protected、private、static、final、abstract、native、synchronized
public、protected、private、static、final在前文有说明过了,这里就不在赘述。
修饰符说明:
abstract
抽象方法、抽象类:abstract抽象方法,abstract和interface都可以用来抽象类,抽象类是单一的继承,interface可以实现多个。从语法层面看,两者没有什么区别,都可以用来抽象类;从设计层面看,其遵循ISP(Interface Segregation Priciple)
遵循OCP(open-close principle),对拓展开放,对修改关闭的原则。实现OCP:抽象、继承、接口、多态。
native
JNI(java native interface),使用java与本地编译好的代码进行交互。
JNI的书写步骤:
编写带有native方法的java类;
使用javac命令编译带有native方法的java类;
使用javah ? jni java类名 , 生成扩展名为.h的头文件;
使用C/C++(或者其他语言)实现本地方法;
将编写的文件生成动态链接库
Synchronized
两种用法:synchronized方法,synchronized块
public static void main(String[] args) {
int times = 1000;//1000次存取
Thread [] thread = new Thread[times];
for(int i=0; i<times; i++){
thread[i] = new Thread(new Runnable() {
@Override
public void run() {
SynchronizedTest.t.storeMoney(100);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
SynchronizedTest.t.getMoney(100);
}
});
thread[i].start();
}
System.out.println("wait!");
for(int i=0; i<times; i++){
try {
thread[i].join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("final:" + SynchronizedTest.amount);
}
结果会很奇怪:
wait!
final:1500
final:1500
wait!
final:1300
final:1300
wait!
final:1400
final:1400
三次执行的结果都不一样。
优化详情。详细介绍了线程,以及synchronized的用法。