1.多线程:
(1)如果一个应用程序有多条执行路径,则被称为多线程程序。概念区分:进程(正在执行的程序)、线程(程序的执行路径,执行单元)、单线程(应用程序只有一条执行路径)、多线程(应用程序有多条执行路径)。
(2)多线程程序实现的两种方案:
-------------A:继承线程Thread类:a:自定义类继承Thread类、b:重写run方法、c:创建测试类,在测试类中创建自定义类的多个对象、d:调用start()方法
-------------B:实现Runnable接口:a:自定义类实现Runnable接口、b:重写run方法、c:创建测试类,并在main方法中创建自定义的一个对象、d:在测试类中创建Thread类的多个对象,并把创建好的自定义类对象作为构造参数传递,e:调用start()方法。
(3)概念区分:A:如何启动一个线程(调用start()方法就等于启动了线程)、B:start()和run()的区别(调用run方法仅仅是普通方法的调用,start方法是先启动线程,然后自动调用run方法)、C:线程随机性原理(cpu的高效切换)、D:线程的安全问题是怎么产生的(程序是多线程,又有共享的数据,并且还有多条语句对共享数据进行操作。),以及是如何解决的(a:同步代码块加锁,b:同步方法)、E:线程的声明周期(
新建状态:创建线程对象
就绪状态:具备执行资格、不具备执行权
运行状态:具备执行资格、具备执行权
----阻塞状态:不具备执行资格、不具备执行权
死亡状态:变成垃圾
2.单例设计模式:
(1)保证类在内存中只有一个对象。
(2)怎么保证:构造私有、自己造一个对象、提供公共访问方式
(3)两种方式:
A:懒汉式
public class Singleton{
public static void main(String[] args) {
private Singleton(){}
private static Singleton instance=null;
public synchronized static Singleton getSingleton(){
if(instance==null){
instance=new Singleton();
}
return instance;
}
}
}
懒加载模式、和线程安全问题需要注意(开发一般用饿汉式)
B:饿汉式
public class Student {
private Student(){}
private static Student s = new Student();
public static Student getStudent() {
return s;
}
}
举例:JDK的Runtime类本身也是单例模式。
设计模式:
就是前人经验的总结和积累,就是一个个的模版。
23种设计模式:
分类:
创建型模式:造对象。
结构型模式:对象间的关系。
行为型模式:功能。