day24总结_多线程和设计模式

1、多线程

①、JDK5以后的针对线程的锁定操作和释放操作

// 定义锁对象
private Lock lock = new ReentrantLock();
// 加锁
lock.lock();
// 释放锁
lock.unlock();

②、死锁问题的描述和代码体现

*死锁:两个或两个以上的线程在争夺资源的过程中,发生的一种相互等待的现象。 
public void run() {
		if (flag) {
			synchronized (MyLock.objA) {
				System.out.println("IF objA");
				synchronized (MyLock.objB) {
					System.out.println("IF objB");
				}
			}
		} else {
			synchronized (MyLock.objB) {
				System.out.println("IF objB");
				synchronized (MyLock.objA) {
					System.out.println("IF objA");
				}
			}
		}
	}

③、生产者和消费者多线程体现(线程间通信问题)

// 基础版本
// 改进版本1
// 改进版本2
// 最终版本3
A:最基本的版本,只有一个数据。
			B:改进版本,给出了不同的数据,并加入了同步机制
			C:等待唤醒机制改进该程序,让数据能够实现依次的出现
				wait()
				notify()
				notifyAll() (多生产多消费)
			D:等待唤醒机制的代码优化。把数据及操作都写在了资源类中

④线程组

⑤线程池

⑥多线程实现的第三种方案

⑦多线程的面试题

二、设计模式

①面试对象的常见设计原则

单一
开闭
里氏
依赖注入
接口

迪米特

②设计模式概述和分类

A:经验的总结

B:三类
创建型
结构型

行为型

③改进的设计模式
A:简单工厂模式
B:工厂方法模式
C:单例模式(掌握)
a:饿汉式

b:懒汉式

④Runtime
JDK提供的一个单例模式应用的类。
还可以调用dos命令。

猜你喜欢

转载自blog.csdn.net/qq_36383239/article/details/79477647