需要记忆

脏读:

假如在3点查询一条数据,查询需要10分钟。但是在3点过5分的时候有一条sql改变了你正在查询的数据,3点10分你查询出来的数据还是老数据,这就是脏读。

对象锁,类锁:

synchronized加在静态方法上是给类上锁,synchronized加在非静态方法中是给对象上锁。

如果多线程同时访问一个类的类锁和对象锁,这两个方法执行是异步的,因为这两种是不同的锁。

类锁对该类的所有对象都有用。

sleep,wait:

两者来自不同的类(分别是Thread和Object)。

sleep没有释放锁,wait释放了锁,使得其他线程可以使用同步控制块或方法

wait只能在同步控制方法或者同步控制块中使用,sleep可以在任何地方调用。

sleep必须捕获异常。

死锁:

互斥条件:一个资源每次只能被一个进程使用。

请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。

不剥夺条件:进程已获得的资源,在未使用完之前,不能强制剥夺。

循环等待条件:若干进程之间形成一种头尾相接的循环资源关系。

在java中所有线程都是同时启动的,至于什么时候,哪个先执行,完全看谁先得到CPU的资源。

在java中,每次程序运行至少启动2个线程。一个是main线程,一个是垃圾回收线程。因为每当使用java命令执行一个类的时候,实际上启动了一个jvm, 每个jvm其实就是在操作系统中启动了一个线程

ArrayDeque, (数组双端队列)

PriorityQueue, (优先级队列) 

ConcurrentLinkedQueue, (基于链表的并发队列)

.DelayQueue, (延期阻塞队列)(阻塞队列实现了BlockingQueue接口)

ArrayBlockingQueue, (基于数组的并发阻塞队列)

LinkedBlockingQueue, (基于链表的FIFO阻塞队列) 

LinkedBlockingDeque, (基于链表的FIFO双端阻塞队列) 

PriorityBlockingQueue, (带优先级的无界阻塞队列)

SynchronousQueue (并发同步阻塞队列)

ArrayBlockingQueue :一个由数组结构组成的有界阻塞队列。 

LinkedBlockingQueue :一个由链表结构组成的有界阻塞队列。 

PriorityBlockingQueue :一个支持优先级排序的无界阻塞队列。

DelayQueue:一个使用优先级队列实现的无界阻塞队列。

SynchronousQueue:一个不存储元素的阻塞队列。

LinkedTransferQueue:一个由链表结构组成的无界阻塞队列。 

LinkedBlockingDeque:一个由链表结构组成的双向阻塞队列。

SpringMVC工作流程:

    1.发送请求至前端控制器DispatcherServlet

    2.DispatcherServlet收到请求调用HandlerMapping处理器映射器

    3.处理器映射器根据请求的url找到具体的处理器,生成处理器对象及处理器拦截器(拦截器如果有则生成)一并返回给DispatcherServlet

    4.DispatcherServlet通过HandlerAdapter处理器适配器调用处理器

    5.执行处理器(Controller)

    6.Controller执行完成返回ModelAndView对象

    7.HandlerAdapter将ModelAndView返回给DispatcherServlet

    8.DispatcherServlet将ModelAndView传递给视图解析器(ViewReslover)

    9.ViewReslover解析后返回具体的视图(view)

    10.DispatcherServlet将具体视图渲染

    11.DispatcherServlet响应用户

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值