多线程
JAVA是怎么解决并发问题的:
可见性: CPU缓存引起
可见性:一个线程对共享变量的修改,另外一个线程能够立刻看到
原子性: 分时复用引起
原子性:即一个操作或者多个操作 要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行
有序性: 重排序引起
有序性:即程序执行的顺序按照代码的先后顺序执行
线程使用方式
有三种使用线程的方法:
实现 Runnable 接口
需要实现 run() 方法。
通过 Thread 调用 start() 方法来启动线程
实现 Callable 接口
与 Runnable 相比,Callable 可以有返回值,返回值通过 FutureTask 进行封装
继承 Thread 类
同样也是需要实现 run() 方法,因为 Thread 类也实现了 Runable 接口
实现接口 VS 继承 Thread
实现接口会更好一些,因为:
- Java 不支持多重继承,因此继承了 Thread 类就无法继承其它类,但是可以实现多个接口;
- 类可能只要求可执行就行,继承整个 Thread 类开销过大
设计模式 - Overview
设计模式的目的
编写代码过程中,程序员面临着来自 耦合性,内聚性以及可维护性,重用性,灵活行等多方面的挑战,设计模式是为了让程序,具有更好的
代码重用性(即:相同功能的代码,不用多次编写)
可读性(即:编程规范行,便于其他程序员阅读和理解)
可扩展性(即:当需要增加新的功能是,非常的方便,称为可维护性)
可靠性(即:当我们增加新的功能后,对原来的功能没影响)
使程序员呈现高内聚,低耦合的特性(对以上四条总结)