重踏学习Java路上_Day24(多线程锁,线程组,设计模式)

1:多线程(理解)


    (1)JDK5以后的针对线程的锁定操作和释放操作
        Lock锁
    (2)死锁问题的描述和代码体现
    (3)生产者和消费者多线程体现(线程间通信问题)

        以学生作为资源来实现的
        
        资源类:Student
        设置数据类:SetThread(生产者)
        获取数据类:GetThread(消费者)
        测试类:StudentDemo
        
        代码:
            A:最基本的版本,只有一个数据。
            B:改进版本,给出了不同的数据,并加入了同步机制
            C:等待唤醒机制改进该程序,让数据能够实现依次的出现
                wait()
                notify()
                notifyAll() (多生产多消费)
            D:等待唤醒机制的代码优化。把数据及操作都写在了资源类中
    (4)线程组 对线程进行分组,分组管理
    (5)线程池 预先设定若干线程,降低IO操作耗损资源,快速调用线程
    (6)多线程实现的第三种方案
    (7)多线程的面试题

2:设计模式(理解)
    (1)面试对象的常见设计原则
        单一
        开闭:OCP
        里氏
        依赖注入:IOC
        接口
        迪米特
    (2)设计模式概述和分类
        A:经验的总结
        B:三类
        创建型模式:简单工厂模式,工厂方法模式,抽象工厂模式,建造者模式,原型模式,单例模式。(6个)
   结构型模式:外观模式、适配器模式、代理模式、装饰模式、桥接模式、组合模式、享元模式。(7个)
    行为型模式:模版方法模式、观察者模式、状态模式、职责链模式、命令模式、访问者模式、策略模式、备忘录模式、迭代器模式、解释器模式。(10个)
    (3)改进的设计模式
        A:简单工厂模式
        B:工厂方法模式
        C:单例模式(掌握)
            a:饿汉式
            b:懒汉式
    (4)Runtime : 每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接,能通过语句操作DOS
        JDK提供的一个单例模式应用的类。
        还可以调用dos命令。

 

package cn.itcast_03;
//饿汉式
public class Student {
    // 构造私有
    private Student() {
    }

    // 自己造一个
    // 静态方法只能访问静态成员变量,加静态
    // 为了不让外界直接访问修改这个值,加private
    private static Student s = new Student();

    // 提供公共的访问方式
    // 为了保证外界能够直接使用该方法,加静态
    public static Student getStudent() {
        return s;
    }
}


/*
 * 单例模式:
 *         饿汉式:类一加载就创建对象
 *         懒汉式:用的时候,才去创建对象
 *
 * 面试题:单例模式的思想是什么?请写一个代码体现。
 *
 *         开发:饿汉式(是不会出问题的单例模式)
 *         面试:懒汉式(可能会出问题的单例模式)
 *             A:懒加载(延迟加载)    
 *             B:线程安全问题
 *                 a:是否多线程环境    是
 *                 b:是否有共享数据    是
 *                 c:是否有多条语句操作共享数据     是
 */
public class Teacher {
    private Teacher() {
    }

    private static Teacher t = null;

    public synchronized static Teacher getTeacher() {
        // t1,t2,t3
        if (t == null) {
            //t1,t2,t3
            t = new Teacher();
        }
        return t;
    }
}


  

Runtime 类提供与DOS的通讯调用接口
我们操作Runtime类就能执行dos命令
package cn.itcast_03;

import java.io.IOException;

/*
* Runtime:每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接。
* exec(String command)
*/
public class RuntimeDemo {
public static void main(String[] args) throws IOException {
Runtime r = Runtime.getRuntime();
// r.exec("winmine");
// r.exec("notepad");
// r.exec("calc");
// r.exec("shutdown -s -t 10000");
r.exec("shutdown -a");
}
}

/*
* class Runtime {
* private Runtime() {}
* private static Runtime currentRuntime = new Runtime();
* public static Runtime getRuntime() {
* return currentRuntime;
* }
* }
*/
-------

你可能感兴趣的:(java)