摘要:
使用线程池可以减少创建和销毁线程的次数,可以调整线程池中工作线程的数量,防止内存过多消耗。在阿里巴巴Java开发手册中,也强调了线程资源必须通过线程池提供,不允许在应用中自行显式创建线程,应通过ThreadPoolExecutor的方式来创建线程池,规避资源耗尽的风险。在学习Java的线程池之前,我 阅读全文
摘要:
本文介绍并发编程的三大性质:原子性,可见性,有序性以及volatile关键字。 1. 原子性 原子性指一个操作或者多个操作,要么全部执行要么全部不执行。在介绍synchronized关键字的时候,就有介绍过,在执行 i++ 的时候,实际上执行的是三个步骤:读取 i 的值,i+1,将结果写入。所以这个 阅读全文
摘要:
本文介绍ReentrantLock。 ReentrantLock 翻译为可重入锁,是 java.util.concurrent.locks 包中的一个类,可以通过代码调用lock() 和 unlock() 方法来进行加锁解锁。因此一般使用的时候要用到try,finally,在finally中进行锁的 阅读全文
摘要:
介绍死锁。 1. 死锁的概念 简单的说,死锁是指多个线程在竞争资源时,造成了互相等待阻塞的现象。例1: public class Test1 { private static final Logger log = LoggerFactory.getLogger(Test1.class); publi 阅读全文
摘要:
1. wait 和 notify wait() 方法是Object类中的方法,他的作用是让当前线程进入等待状态,而使用notify() 方法可以唤醒。 wait(long): void ,参数是毫秒,表示等待毫秒数,直到时间结束或被唤醒; wait(long, int): void ,第一个参数是毫 阅读全文
摘要:
介绍synchronized关键字 1. 概念 同步代码块(Synchronized Block)是Java提供的一种内置锁机制。用关键字synchronized来修饰的方法,就是同步代码块。线程在进入同步代码块的时候会自动获取锁,退出代码块时会自动释放锁。内置锁是互斥锁,最多只有一个线程能持有,被 阅读全文
摘要:
java线程状态 1. 操作系统进程的五种状态 网上找了一张图: 2. java线程的六种状态 Thread类中getState()方法可以获取线程的状态,返回值是Thread类中的enum类型,取值有NEW,RUNNABLE,BLOCKED,WAITING,TIMED_WAITING,TERMIN 阅读全文
摘要:
介绍一下线程常用的一些方法 1. run() 和 start() start() 方法让线程进入就绪状态 run() 方法 是Runnable 中的一个抽象方法,线程启动时就会调用run() 方法 (1) 如果直接调用run()方法,是不会启动新线程的 public class Test1 { pr 阅读全文
摘要:
介绍线程创建的两种基本的方法:继承Thread类和实现Runnable接口 1. 继承Thread类 自定义类继承Thread类,重写 run() 方法 import org.slf4j.LoggerFactory; /** * @author: yt * @date: 2021/4/12 22:0 阅读全文
摘要:
在springboot中使用mybatis 1. 建表 在test库中,建立一张animal表,并存入三条数据。 CREATE TABLE `test`.`animal` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(30) CHARA 阅读全文