
多线程
文章平均质量分 69
多线程
雨橄
这个作者很懒,什么都没留下…
展开
-
Callable使用
Callable与Runnable异同原创 2024-02-21 15:38:35 · 1393 阅读 · 0 评论 -
ThreadLocal的使用及实现原理
1、介绍概念:ThreadLocal叫做线程本地变量,当某个线程访问该变量的时候,会在当前线程内部创建一个该变量的副本,在当前线程中对该变量的操作(增删改查)都是针对的副本变量,不会对其它线程造成影响。作用:使共享变量在多线程间隔离操作,相互不影响,达到线程隔离的效果。2、和synchronized异同synchronized与ThreadLocal都是为了解决并发编程中可能出现的线程安全问题,二者采取的完全相反的解决方式,应用场景不同。synchronized是采用锁机制,使操作共享变量的代码原创 2022-04-27 17:52:17 · 322 阅读 · 0 评论 -
wait,notify/notifyAll的使用及实现原理
1、介绍java中的wait/notify的等待唤醒机制可以实现线程间的通信,wait使当前线程进入等待,该操作会使线程阻塞,直到其它线程唤醒(调用notify、notifyAll方法)它才可继续执行。wait()、notify()/notifyAll()都是定义在 Object类的final方法,不支持重写。wait()、notify()/notifyAll()都和对象监视器密切相关,所以这几个方法都需和synchronized搭配使用。wait()方法在已获取锁的前提下,使当前线程阻塞,释放当原创 2022-04-21 16:56:31 · 1254 阅读 · 0 评论 -
java线程池的使用及实现原理
1、介绍不使用线程池面临的问题众所周知,java中线程的创建、切换、销毁都是比较消耗计算机资源的,若是线程执行的任务逻辑比较简单,创建、销毁线程消耗的计算机资源可能大于任务本身。特别是频繁的创建大量的线程,大量的线程在上下文切换的同时,系统也可能变得不稳定。线程池优点减少资源消耗:通过线程复用,避免重复创建、销毁线程造成额外的资源消耗。提高响应速度:任务到达时,已有线程直接执行任务,无需实时创建线程造成的时间消耗。资源上限管理:线程池的大小是预设的,避免系统无上限创建线程造成内存溢出。2、原创 2022-04-18 16:45:29 · 610 阅读 · 0 评论 -
java阻塞队列的使用
1、介绍阻塞队列,其实就是满足队列操作(先进先出)的一个数据集合,同时满足存取数据时的阻塞功能。先进入阻塞队列的对象,会先被消费掉。当阻塞队列已满时,生产者线程添加对象操作会被阻塞。当阻塞队列已空时,消费者线程取出对象操作会被阻塞。2、API分析阻塞队列的直接接口为BlockingQueue,此接口内部定义了操作队列的各种方法。BlockingQueue间接实现了Collection接口,所以阻塞队列其实就是一个集合,操作集合的各种方法,阻塞队列也满足。核心方法方法类型抛原创 2022-04-16 11:45:31 · 1650 阅读 · 0 评论 -
synchronized使用
1、作用synchronized是java的一个关键字,是JVM层面提供解决并发问题的简单常用手段。可以保证同一时刻仅一个线程运行指定代码块或方法。即为所谓的加锁操作。2、概述加锁操作是依赖于对象的,java的任何对象都可以用于锁住代码块或方法。每个对象里面都存有一个“锁”对象,用于标识哪个线程获取了此“锁”对象,一旦某线程获取,其它线程便只能等待释放。互斥性:共用同一个锁对象,线程间执行互斥。如上图,inst对象内部的锁信息仅能记录一个线程信息,当记录thread1时,thread2就进不来。原创 2022-04-08 16:28:31 · 1118 阅读 · 0 评论