java-面试题必备

多线程

进程和线程

进程:正在运行的程序。也就是程序所占用的内存空间。

线程:线程(thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一个进程可以开启多个线程。

进程与线程的关系:一个操作系统中可以有多个进程,一个进程中可以有多个线程,每个进程有自己独立的内存,每个线程共享一个进程中的内存,每个线程又有自己独立的内存。(重要)

设计模式

单例模式(懒汉式单例)

  • 延迟加载 和 线程安全
 1 /单例设计模式  懒汉式
 2         //面试重点:  延迟加载   +  线程安全
 3         public class Test4_MySingle2 {
 4             public static void main(String[] args) {
 5                 MySingleton s1 = MySingleton.getSingleton();
 6                 MySingleton s2 = MySingleton.getSingleton();
 7                 System.out.println(s1 == s2);
 8             }
 9         }
10 
11         // 创建类,保证全局只有唯一实例
12         class MySingleton {
13             // 1、私有化构造方法
14             private MySingleton() {
15             }
16             // 2、在类的内部创建对象 -- 延迟加载!!!
17             static private MySingleton single;  // 初始化不创建对象,需要时才创建
18             // 3、提供公共的访问方法
19             //synchronized修饰,是因为共享资源single被多条语句(3条)操作,就会存在线程安全隐患,所以变成同步的,牺牲效率提高安全
20             synchronized    static public MySingleton getSingleton() {
21         //        synchronized (this) {
22                     if (single == null) {
23                         single = new MySingleton();
24                     }
25                     return single;
26         //        }
27             }
28         }

 

上一篇:mysql的链接单例模式和线程池的优劣性


下一篇:Problem#136 Single Number