作为业务开发人员,能够在工作中用到的技术其实不多.虽然平时老是说什么,多线程,并发,注入,攻击!但是在实际工作中,这些东西不见得用得上.因为,我们用的框架已经把这些事做掉了. 比如web开发,外面有大量的请求进来,按理说,我们应该考虑并发问题.但其实,spring接到请求,分配到controller之后,就已经是线程安全的了,所以我们要做的就是,从controller开始,到最后请求响应结束,保证线程安全即可. 多线程好像有很多东西需要注意,阅读<Java 多线程编程核心技术>后,做个总结,总…
一.基本概念理解:1.1.进程和线程的理解1.2.同步和异步的理解(阻塞模式和非阻塞模式)1.3 线程间共享变量和不共享变量二.多线程的实现方式和构造方法:2.1 实现方式:2个2.2 构造方法:8个三.线程的常用方法3.1 start()方法3.2 run()方法:让线程运行3.3 sleep()方法:让线程休眠3.4 suspend()方法和resume()方法:让线程暂停与恢复3.5 .stop()方法:让线程停止(已废弃+不建议)3.6 interrupt()方法:让线程停止(给线程打上…
一. 等待/通知机制:wait()和notify()1.1.使用的原因:1.2 具体实现:wait()和notify()1.2.1 方法wait():1.2.2 方法notify():1.2.3 wait()和notify()使用对比:1.3 当interrupt方法遇到wait方法1.4 notifyAll():唤醒所有线程1.5 方法wait(long)二.方法join的使用2.1 join()方法的作用:本质是wait()2.2 join和synchronized的区别:2.3 join(…
一.基本概念1.安全的变量和不安全的变量2.脏读的理解3.锁重入:4.锁释放5.死循环:二.synchronized 的理解:三.synchronized 同步方法3.1 同步方法不具有继承性.3.2 同步方法的弊端:四.synchronized 同步代码块4.1 synchronized(this)同步代码块4.1.1 实现:4.1.2 注意:4.2 synchronized(x):将任意对象作为对象监视器:4.3 synchronized.synchronized(this)和synchro…
一.立即加载/"饿汉模式"和延迟加载/"懒汉模式" 立即加载(又称饿汉模式):在使用类的时候已经将对象创建完毕,常见实现方法是直接new实例化 延迟加载(又称懒汉模式):在调用get()方法时实例才被创建,常见实现方法是在get()方法中进行new实例化 二.懒汉模式在多线程下的缺点及解决 缺点:可能会出现多个实例的问题. 解决: 1.声明synchronized关键字: 对get方法加上synchronized关键字即可保证同步运行,但效率太低. 2.尝试同步代码…
一.线程的状态 1.1 状态种类及理解:(一共6个) 文字说明和理解: NEW状态:线程实例化后还从未执行start()方法时的状态: RUNNABLE状态:线程进入运行的状态: TERMINATED状态:线程被销毁时的状态: TIMED_WAITING状态:线程执行了Thread.sleep()方法,呈等待状态.等待时间达到,继续向下执行.(明确知道等待时间的状态) BLOCKED状态:线程在等待锁的时候(是线程已经运行了,但是需要等待锁,此时无法继续运行,处于这种状态): WAITING状态…
一.使用ReentrantLock类1.1 ReentrantLock的使用:1.2 ReentrantLock的不足:1.3 正确使用Condition实现等待/通知1.4 使用多个Condition实现通知部分线程:正确用法1.5 各种方法的测试二.使用ReentrantReadWriteLock类2.1 类ReentrantReadWriteLock初识三.对比:ReentrantLock和ReentrantReadWriteLock五.Lock类和synchronize六.公平锁与非公平…
一.定时器Timer的使用 1.1 方法schedule(TimerTask task, Date time) 是否过期 执行说明 开始执行时间 time>当前时间(未过期) 在time到达时执行 time(未被延期) time<当前时间(已过期) 当前时间立即执行 当前时间(被延期) 注意:TimeTask以队列的方式一个一个被顺序执行. 如果前一个任务执行时间过长,则后面的任务开始执行时间会被延期.和计划时间不同.(这可能也是当time<当前时间时,任务会被立即执行的原因) 1.2…
数据类型String的常量池特性 在JVM中具有String常量池缓存的功能. public class Service { public static void print(String str){ try { synchronized (str) { while (true) { System.out.println(Thread.currentThread().getName()); Thread.sleep(500); } } } catch (Exception e) { e.prin…
本文主要介绍Java多线程中的同步,也就是如何在Java语言中写出线程安全的程序,如何在Java语言中解决非线程安全的相关问题.阅读本文应该着重掌握如下技术点: synchronized对象监视器为Object时的使用. synchronized对象监视器为Class时的使用. 非线程安全是如何出现的. 关键字volatile的主要作用. 关键字volatile与synchronized的区别及使用情况. 1.synchronized同步方法 "非线程安全"其实会在多个线程对同一个对象…