No title
1. Spring注解开发1.1 Spring原始注解
注解
说明
@Component
使用在类上用于实例化Bean
@Controller
使用在web层类上用于实例化Bean
@Service
使用在service层类上用于实例化Bean
@Repository
使用 ...
synchronized & volatile 全面理解
1. CAS
CAS也称为自旋锁
2.用户态和内核态用户态只能访问用户允许访问的内容
内核态可以访问所有内容
jdk早期,synchronized叫做重量级锁,因为申请锁资源必须通过kernel,系统调用。
3.锁升级自旋锁什么时候升级为重量级锁?
为什么有自旋锁还需要重量级锁?
自旋是消耗CPU ...
java_volatile
1.1多线程下变量的不可见性1.1.1 说明 多线程并发执行下,多个线程修改共享变量,会出现一个线程修改了共享变量的值后,另一个线程无法直接看到修改的新值。
1.2 变量不可见性的内存语义1.2.1 概述JMM(Java Memory Model):java内存模型是java虚拟机规 ...
java_concurrent
一些常用数据结构对应的线程安全类
Atomic原子类型线程池线程池维护若干个线程,处于等待状态
如果有新任务,就分配一个空闲线程执行
如果所有线程都处于忙碌状态,新任务放入队列等待
jdk提供了ExecutorService接口表示线程池:
总结JDK提供了ExecutorService实现了线程池 ...
java_ReentrantLock
ReentrantLock
ReentrantLock可以替代synchronized
ReentrantLock获取锁更安全
必须使用try…finally保证正确获取和释放锁
ReadWriteLock
ReadWriteLock只允许一个线程写入
ReadWriteLock允许多个线程同时读 ...
java——wait()和notify()
synchronized 没有解决多线程协调的问题多线程协调运行:当条件不满足时,线程进入等待状态
wait()执行
只能在sychronized中调用wait,wait会释放锁。
总结
在synchronized内部可以调用wait()使线程进入等待状态
必须在已获得的锁对象上调用wait( ...
java死锁
java的线程锁可以重入的锁,锁对象也可以不同java123456public void add(int m) {synchronized (1ock) { this.value += m; synchronized (lock) { this.another ...
java线程同步
1.多线程的问题当多个线程同时运行时,线程的调度由操作系统决定,程序本身无法决定。因此,任何一个线程都有可能在任何指令处被操作系统暂停,然后在某个时间段后继续执行。
这个时候,有个单线程模型下不存在的问题就来了:如果多个线程同时读写共享变量,会出现数据不一致的问题。
2.注意
当对共享变量进行写入时 ...
java线程的状态
线程状态
New 新创建
Runnable运行中
Blocked被阻塞
Waiting等待
Timed Waiting计时等待
Terminated已终止
Thread.join可以等待当前线程结束后,再运行主线程
中断线程
如果线程需要执行一个长时间任务,就可能终端线程
中断线程就是其他线程个该 ...
java多线程创建
1.java多线程的创建创建MyThread类:
1) 从Thread 派生
2)覆盖run()方法
3)创建MyThread实例
4)调用start()启动
继承Runnable:
1)实现Runnable接口
2)覆写run()方法
3)在main()创建Runnable方法
4)创建T ...