![](https://img-blog.csdnimg.cn/daba7cae4ccc46608fb2d0aa788c1204.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java多线程编程
文章平均质量分 88
进程,线程,多线程......
是小辰
热爱编程,喜欢算法,努力成为更好的自己。
展开
-
【多线程】线程安全的集合类
相比HashTable,ConcurrentHashMap就进行了优化,只对写操作进行加锁(锁的不是整个对象,而是‘桶锁’,以每个链表的头节点作为锁,那么,只有多线程同时访问一个桶时才会锁冲突),读并没有加锁(但是使用了volatile,保证内存的可见性)那么多线程读时,效率就会大大提升。当我们往一个容器添加元素的时候,不直接往当前容器添加,而是先将当前容器进行Copy,复制出一个新的容器,然后新的容器里添加元素,添加完元素之后,再将原容器的引用指向新的容器。CopyOnWrite容器即写时复制的容器。原创 2023-09-29 15:18:40 · 128 阅读 · 0 评论 -
【多线程】常用的接口和类(Callable,ReentrantLock,原子类,信号量,CountDownLatch)
常用的接口和类(Callable,ReentrantLock,原子类,信号量,CountDownLatch)原创 2023-09-29 11:26:29 · 215 阅读 · 0 评论 -
【多线程】常见的锁策略与synchronized原理
常见的锁策略。乐观锁:在乐观锁中会假设共享资源并没有加锁,对其进行访问时,直接访问,如果有其他线程对其访问,则会放弃此次访问,等待一定再次访问(乐观锁虽然没有加锁,但是可以识别出数据冲突,下面讲)。多线程之间,读(访问)数据与读数据之间并不会有线程安全,但是读数据与写(修改)数据之间却会,我们如果把两者放入一个锁中,对性能便会造成损耗,这个时候读写锁便孕育而生了。公平锁就是当多个线程访问共同资源时,当锁释放后,会按照先后等待的先后顺序获得锁,先来后到,锁里需要含特定的等待队列顺序,所以需要更大的开销。原创 2023-09-18 20:34:15 · 217 阅读 · 0 评论 -
【多线程案例】线程池的应用及实现
线程池就相当于一个池子,里面有很多的创建好的线程,可以进行统一的管理。当我们使用线程的时候,直接从里面调取,而不用在频繁的创建与销毁。降低了线程创建销毁的开销:不用频繁的创建销毁线程,减少了资源 的开销;提高系统的稳定性:线程池中的线程是有限的的,避免了创建了大量线程,造成系统崩溃;提高资源的利用率:线程池能够合理的分配系统资源(CPU时间,内存等),提高资源的利用率;方便管理线程:线程池中的线程可以统一进行管理,方便创建,暂停,启动,销毁等操作;原创 2023-09-04 10:28:00 · 143 阅读 · 0 评论 -
【多线程案例】定时器应用及实现
Timer中核心的方法是schedule,schedule中有俩个参数,一个是参数是执行任务代码,另一个参数是指定代码多少毫秒后执行。使用优先级堵塞队列:那么,我们的扫描线程只需要扫描队列的队头,因为 在这个优先级堵塞队列中可以使最先执行的任务放在队头,而且在扫描到这个对头后,我们也可以进入休眠,更一步减少资源浪费。如果使用普通队列:在执行任务前,扫描线程不停的遍历队列,找到要执行的任务,在遍历时,线程执行的速度时非常快的,这个时候就非常浪费CPU资源。自己实现一个定时器能够帮助我们更好的理解定时器。原创 2023-09-03 20:51:32 · 157 阅读 · 0 评论 -
【多线程案例】生产者消费者模型(堵塞队列)
堵塞队列也是队列,故遵循先进先出的原则。但堵塞队列是一种线程安全的数据结构,可以避免线程安全问题,当队列为空时,继续出队列会发生堵塞,直至其他线程有元素进队列。当队列满时,继续入队列会堵塞,直至其他线程有元素出队列。生产者消费者模型就是最经典的堵塞队列模型之一。原创 2023-09-03 19:13:44 · 205 阅读 · 0 评论 -
【多线程】线程间通信及状态
如果等待机制成立,那么运行过程应该是先启动线程t1,然后打印"Thread-0: begin",然后执行wait(),进入等待并释放锁,然后在启动t2后会先打印"t2: begin",然后唤醒t1,但是因为锁还没释放,会继续执行t2后面代码,打印"t2: end",最后释放锁,执行t1,打印"Thread-0: end",如果运行结果和我们分析相同,那么等待机制成立。实例化一个线程未启动,这时线程就是NEW状态,当启动后,运行中就是RUNNABLE状态,等待线程运行结束,就是TERMINATED状态。原创 2023-09-03 09:59:14 · 101 阅读 · 0 评论 -
【多线程案例】单例模式(懒汉模式和饿汉模式)
提起单例模式,就必须介绍设计模式,而设计模式就是在软件设计中,针对特殊问题提出的解决方案。它是多年来针对一些常见的问题的解决方法,具有良好的可复用性、可扩展性和可维护性。标准的设计模式有23种,单例模式就是最常见的一种,其目的是确认一个类只有一个实例对象,并且可以提供一个全局访问点来访问该实例。单例就是指一个类的实例只有一个,即该类的所有对象都指向用同一个实例。原创 2023-09-01 15:48:38 · 625 阅读 · 0 评论 -
【多线程】线程安全(重点)
线程安全,重点介绍synchronized和volatile及可见性,原子性。原创 2023-08-28 18:52:15 · 92 阅读 · 0 评论 -
【多线程】Thread类的用法
一些比较基础,但很重要的Thread类的知识点!原创 2023-08-26 16:25:37 · 844 阅读 · 0 评论 -
【多线程编程的第一课】进程和线程的概念,区别,联系
学会多线程编程的第一课!原创 2023-08-24 15:31:19 · 92 阅读 · 0 评论