多线程
多线程案例,线程池
心寒丶
java后台,oracle数据库,前端全栈开发,三个臭皮匠,顶个诸葛亮,有问题咱一起解决!只要你问,只要我会(不会可以一起研究),倾囊相授
展开
-
使用Future实现多线程
使用Future实现多线程原创 2022-05-05 18:00:00 · 849 阅读 · 1 评论 -
多线程整理
最近整理了一些多线程基本概念及案例,写成博客为了加深影响,内容如下:内容 地址 【多线程整理 1】线程及生命周期介绍 https://mp.csdn.net/mp_blog/creation/editor/118565801 【多线程整理 2】实现多线程常见三种方法 https://mp.csdn.net/mp_blog/creation/editor/118566346 【多线程整理 3】wait方法 https://mp.csdn.net/mp_blog/crea原创 2021-07-15 08:52:18 · 128 阅读 · 0 评论 -
【多线程整理 11】多线程涉及锁
乐观锁与悲观锁悲观锁 :悲观锁指对数据被外界修改持保守态度,认为数据很容易就会被其他线程修改,所以在数据被处理前先对数据进行加锁,并在整个数据处理过程中,使数据处于锁定状态。悲观锁的实现往往依靠数据库提供的锁机制,即在数据库中,在对数据记录操作前给记录加排它锁。如果获取锁失败,则说明数据正在被其他线程修改,当前线程则等待或者抛出异常。如果获取锁成功,则对记录进行操作,然后提交事务后释放排它锁。乐观锁:乐观锁是相对悲观锁来说的,它认为数据在一...原创 2021-07-09 15:08:20 · 212 阅读 · 0 评论 -
【多线程整理 10】synchronized和volatile
synchronized:synchronized块是Java提供的一种原子性内置锁,Java中的每个对象都可以把它当作一个同步锁来使用,这些Java内置的使用者看不到的锁被称为内部锁,也叫作监视器锁。线程的执行代码在进入synchronized代码块前会自动获取内部锁,这时候其他线程访问该同步代码块时会被阻塞挂起。拿到内部锁的线程会在正常退出同步代码块或者抛出异常后或者在同步块内调用了该内置锁资源的wait系列方法时释放该内置锁。内置锁是排它锁,也就是当一个线程获取这个锁后,其他线程必...原创 2021-07-09 10:10:15 · 155 阅读 · 0 评论 -
【多线程整理 9】线程死锁
死锁是指两个或两个以上的线程在执行过程中,因争夺资源而造成的互相等待的现象,在无外力作用的情况下,这些线程会一直相互等待而无法继续运行下去。死锁的产生必须具备以下四个条件:互斥条件﹔指线程对已经获取到的资源进行排它性使用,即该资源同时只由一个线程占用。如果此时还有其他线程请求获取该资源,则请求者只能等待,直至占有资源的线程释放该资源。请求并持有条件:指一个线程已经持有了至少一个资源,但又提出了新的资源请求,而新资源已被其他线程占有,所以当前线程会被阻塞,但阻塞的同时并不释...原创 2021-07-09 09:08:19 · 158 阅读 · 0 评论 -
【多线程整理 8】线程中断
Java中的线程中断是一种线程间的协作模式,通过设置线程的中断标志并不能直接终止该线程的执行,而是被中断的线程根据中断状态自行处理。void interrupt()方法中断线程,例如,当线程A运行时,线程B可以调用线程A的 interrupt()方法来设置线程A的中断标志为true并立即返回。设置标志仅仅是设置标志,线程A实际并没有被中断,它会继续往下执行。如果线程A因为调用了wait系列函数、join方法或者sleep方法而被阻塞挂起,这时候若线程B调用线程A的interrupt()方法,线程A.原创 2021-07-08 16:49:20 · 171 阅读 · 0 评论 -
【多线程整理 7】yield
Thread类中有一个静态的yield方法,当一个线程调用yield方法时,实际就是在暗示线程调度器当前线程请求让出自己的CPU使用,但是线程调度器可以无条件忽略这个暗示。我们知道操作系统是为每个线程分配一个时间片来占有CPU的,正常情况下当一个线程把分配给自己的时间片使用完后,线程调度器才会进行下一轮的线程调度,而当一个线程调用了Thread类的静态方法yield 时,是在告诉线程调度器自己占有的时间片中还没有使用完的部分自己不想使用了,这暗示线程调度器现在就可以进行下一轮的线程调度。...原创 2021-07-08 16:36:55 · 316 阅读 · 0 评论 -
【多线程整理 6】sleep
Thread类中有一个静态的sleep方法,当一个执行中的线程调用了Thread的 sleep方法后,调用线程会暂时让出指定时间的执行权,也就是在这期间不参与CPU的调度,但是该线程所拥有的监视器资源,比如锁还是持有不让出的。指定的睡眠时间到了后该函数会正常返回,线程就处于就绪状态,然后参与CPU的调度,获取到CPU资源后就可以继续运行了。如果在睡眠期间其他线程调用了该线程的 interrupt()方法中断了该线程,则该线程会在调用sleep方法的地方抛出 InterruptedException异常而返回原创 2021-07-08 15:43:34 · 250 阅读 · 0 评论 -
【多线程整理 5】join
Thread类中join方法:等待某几件事情完成后才能继续往下执行,比如多个线程加载资源,需要等待多个线程全部加载完毕再汇总处理。join方法则是Thread类直接提供的。join是无参且返回值为void的方法。package thread.join;public class joinTest { public static void main(String[] args) throws InterruptedException { Thread threadA = new Thread (原创 2021-07-08 15:22:09 · 111 阅读 · 0 评论 -
【多线程整理 4】notify与notifyAll
notify()一个线程调用共享对象的notify)方法后,会唤醒一个在该共享变量上调用wait系列方法后被挂起的线程。一个共享变量上可能会有多个线程在等待,具体唤醒哪个等待的线程是随机的。此外,被唤醒的线程不能马上从 wait方法返回并继续执行,它必须在获取了共享对象的监视器锁后才可以返回,也就是唤醒它的线程释放了共享变量上的监视器锁后,被唤醒的线程也不一定会获取到共享对象的监视器锁,这是因为该线程还需要和其他线程一起竞争该锁,只有该线程竞争到了共享变量的监视器锁后...原创 2021-07-08 14:37:50 · 785 阅读 · 0 评论 -
【多线程整理 3】wait方法
当一个线程调用一个共享变量的 wait()方法时,该调用线程会被阻塞挂起,直到发生下面几件事情之一才返回:(1)其他线程调用了该共享对象的notify()或者notifyAll()方法;(2)其他线程调用了该线程的interrupt()方法,该线程抛出InterruptedException异常返回。另外需要注意的是,如果调用wait()方法的线程没有事先获取该对象的监视器锁,则调用 wait()方法时调用线程会抛出IllegalMonitorStateException异常。获取一个共享变原创 2021-07-08 10:44:47 · 1335 阅读 · 0 评论 -
【多线程整理 2】实现多线程常见三种方法
一:继承Thread类重写run方法package thread.threadCreate;public class ThreadTest extends Thread { @Override public void run(){ System.out.println("继承Thread类重写run方法"); System.out.println(this.currentThread()); } public static void main(String[] args原创 2021-07-08 09:58:28 · 188 阅读 · 0 评论 -
【多线程整理 1】线程及生命周期介绍
线程是进程中的一个实体,线程本身是不会独立存在的。进程是代码在数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,线程则是进程的一个执行路径,一个进程中至少有一个线程,进程中的多个线程共享进程的资源。对计算机来说每一个任务就是一个进程(Process),在每一个进程内部至少要有一个线程(Thread)是在运行中,有时线程也称为轻量级的进程。这是曾今在某书籍中看到的截图由图中可以看到,一个进程中有 个线程,多个线程共享进程的堆和方法区资源, 但是每个线程有自己的程 计数器和技区域。.原创 2021-07-08 09:07:30 · 229 阅读 · 0 评论 -
ThreadPoolExecutor参数详解
corePoolSize:表示常驻核心线程数。如果等于0,则任务执行完之后,没有任何请求进入时销毁线程池的线程;如果大于0,即使本地任务执行完毕,核心线程也不会被销毁。这个值的设置非常关键,设置过大会浪费资源,设置过小会导致线程频繁地创建或销毁。maximumPoolSize:表示线程池能够容纳同时执行的最大线程数。从上方示例代码中的第1处来看,必须大于或等于1。如果待执行的线程数大于此值,需要借助第5个参数的帮助,缓存在队列中。如果maximumPoolSize与corePoolSize相等,...原创 2021-06-17 09:16:41 · 1380 阅读 · 0 评论