sleep() 是 Thread 的静态方法,而 wait() 是 Object 的方法。
wait(), notify(),notifyall()都用在同步里面,因为这3个函数是对持有锁的线程进行操作,而只有同步才有锁,所以要使用在同步中。1、wait方法:导致当前线程进入等待,直到其他线程调用该同步监视器的notify方法或notifyall方法来唤醒该线程。一、wait方法:导致当前线程进入等待,直到其他线程调用该同步监视器的notify方法或notifyall方法来唤醒该线程。
多线程与并发参考:
Java 并发编程简介
并发编程的优缺点
线程的状态转换以及基本操作
Java并发专栏
Java多线程和线程池
多线程的优点
JAVA多线程实现和应用总结
11、对 ClassLoader 的理解
ClassLoader 的作用是根据一个指定的类名称找到或者生成其对应的字节代码,然后把字节码转换成一个 Java 类(即 java.lang.Class 实例),除此之外还负责加载 Java 应用所需的资源、Native lib 库等。
Java 的类加载器大致可以分成系统类加载器和应用开发自定义类加载器。系统类加载器主要有如下几个:
引导类加载器(bootstrap class loader):用来加载 Java 核心库,是虚拟机中用原生代码实现的,没有继承自 ClassLoader。
2. 扩展类加载器(extensions class loader):它用来加载 java 的扩展库。java虚拟机自带的类加载器包括根类加载器、扩展类加载器和系统类加载器。前面介绍过,java虚拟机自带的类加载器包括根类加载器、扩展类加载器和系统类加载器。
3、system classloader -系统(也称为应用)类加载器,它负责在jvm被启动时,加载来自在命令java中的-classpath或者java.class.path系统属性或者 classpath操作系统属性所指定的jar类包和类路径。对于非数组类的加载,既可以使用系统提供的引导类加载器来完成,也可以由用户自定义的类加载器去完成。(3)应用程序类加载器(application classloader):也称为系统类加载器,是程序的默认类加载器,负责加载用户路径上所指定的类库。
除了引导类加载器之外,所有的其他类加载器都有一个父类加载器(可以通过 ClassLoader 的 getParent() 方法得到)。系统类加载器的父类加载器是扩展类加载器,而扩展类加载器的父类加载器是引导类加载器。
开发自定义的类加载器的父类加载器是加载此类加载器的 Java 类的类加载器。所以类加载器在尝试自己去加载某个类时会先通过 getParent() 代理给其父类加载器,由父类加载器先去尝试加载这个类,依次类推,从而形成了双亲委派模式。类加载机制是通过 loadClass 方法触发的,查找类有没有被加载和该代理给哪个层级的加载器加载是由 findClass 方法实现的,而真正完成类加载工作是 defineClass 方法实现的。
12、ArrayList和Vector有何异同点?
ArrayList和Vector在很多时候都很类似。
(1)两者都是基于索引的,内部由一个数组支持。
(2)两者维护插入的顺序,我们可以根据插入顺序来获取元素。
(3)ArrayList和Vector的迭代器实现都是fail-fast的。
(4)ArrayList和Vector两者允许null值,也可以使用索引值对元素进行随机访问。
以下是ArrayList和Vector的不同点。
(1)Vector是同步的,而ArrayList不是。然而,如果你寻求在迭代的时候对列表进行改变,你应该使用CopyOnWriteArrayList。
(2)ArrayList比Vector快,它因为有同步,不会过载。
(6)尽可能使用collections工具类,或者获取只读、同步或空的集合,而非编写自己的实现。每个同步工具类的自定义同步器都继承自aqs父类,是否可以获取锁根据同步类自身的功能要求。若您确实需要修改同步账号,可使用【工具】—【导出账簿数据】功能将该账簿所有数据导出,然后新建个账簿,在新账簿中使用【工具】—【导如账簿数据】功能导入,(注:导出导入账簿数据可能会造成部分数据混乱,导入后请先核对和调整账簿数据)再在【工具】—【同步数据】功能中使用新的同步账号同步即可。
13、SpringMVC运行原理
客户端请求提交到DispatcherServlet
2.dispatcherservlet查询一个或多个handlermapping,找到处理请求的controller.。(2) dispatcherservlet查询一个或多个handlermapping,找到处理请求的controller。2) dispatcherservlet查询一个或多个handlermapping,找到处理请求的controller.。
Controller调用业务逻辑处理后,返回ModelAndView
DispatcherServlet查询一个或多个ViewResoler视图解析器,找到ModelAndView指定的视图
视图负责将结果显示到客户端
参考:
SpringMVC架构浅析
SpringMVC工作原理
自己手写一个SpringMVC框架
手写spring+springmvc+mybatis框架篇【springmvc】
14、说说熟悉的排序算法(很可能手写伪代码)
基数排序
堆排序
归并排序
选择排序
拓扑排序之Java详解
希尔排序
直接插入排序
快速排序
冒泡排序
15、项目中用到了什么设计模式(也可能伪代码)
设计模式专栏:https://www.javazhiyin.com/category/sjms
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-115503-3.html
为大家带来更多更好的角色