多线程

JAVA是怎么解决并发问题的:

可见性: CPU缓存引起

可见性:一个线程对共享变量的修改,另外一个线程能够立刻看到

原子性: 分时复用引起

原子性:即一个操作或者多个操作 要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行

有序性: 重排序引起

有序性:即程序执行的顺序按照代码的先后顺序执行

线程使用方式

有三种使用线程的方法:

实现 Runnable 接口

需要实现 run() 方法。
通过 Thread 调用 start() 方法来启动线程

实现 Callable 接口

与 Runnable 相比,Callable 可以有返回值,返回值通过 FutureTask 进行封装

继承 Thread 类

同样也是需要实现 run() 方法,因为 Thread 类也实现了 Runable 接口

实现接口 VS 继承 Thread

实现接口会更好一些,因为:

  • Java 不支持多重继承,因此继承了 Thread 类就无法继承其它类,但是可以实现多个接口;
  • 类可能只要求可执行就行,继承整个 Thread 类开销过大

    设计模式 - Overview

    设计模式的目的

    编写代码过程中,程序员面临着来自 耦合性,内聚性以及可维护性,重用性,灵活行等多方面的挑战,设计模式是为了让程序,具有更好的

    代码重用性(即:相同功能的代码,不用多次编写) 可读性(即:编程规范行,便于其他程序员阅读和理解) 可扩展性(即:当需要增加新的功能是,非常的方便,称为可维护性) 可靠性(即:当我们增加新的功能后,对原来的功能没影响) 使程序员呈现高内聚,低耦合的特性(对以上四条总结)