![](https://img-blog.csdnimg.cn/d9918bfff4b4432db1274419da6bd173.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
多线程
文章平均质量分 95
多线程
小周学编程~~~
越努力,越幸运
展开
-
【多线程】JUC里的一些组件和多线程中的一些集合类
这样做的好处就是,修改的同时对于读操作,是没有任何影响的,读的时候就会读取原来的旧版本,不会出现,读带一个"修改了一半"的中间版本。使用信号量可以实现 “共享锁”,比如某个资源允许3个线程同时使用,那么就可以使用 P 操作作为加锁,V 操作做为解锁,前三个线程的 P 操作,都能顺利返回,后续线程在进行 P 操作就会阻塞等待,直到前面的线程执行了V 操作。Semaphore(信号量):是一个广义的锁,锁是信号量里的一种特殊情况,叫做“二元信号量”,信号量,用来表示“可用资源个数”,本质上就是一个计数器。...原创 2022-08-08 22:55:58 · 348 阅读 · 3 评论 -
【多线程】锁策略, 和 synchronized 优化过程
有些程序的代码中,用到了synchronized,但是其实没有在多线程的环境下。例如StringBuffer.我们知道在StringBuffer类的源码中,是用synchronized修饰的,是线程安全的,它适合在多线程的环境下使用。原创 2022-08-06 20:11:32 · 377 阅读 · 8 评论 -
【多线程】实现一个线程池
老铁们可以在博主以前写的博客中了解到,所谓的进程比较重,如果频繁的创建和贤惠,这样就会对内存资源的开销会很大,于是我们的解决办法使用进程池或者线程。线程,虽然比进程更轻了,但是如果创建销毁的频率进一步增加,仍然会发现内存资源的开销还是很大,那么我们的解决办法是使用线程池或者协程。所谓的线程池就是把线程提前创建好,放到池子里。后面面程序中如果要使用到线程的话,就直接从池子里取,就不必从系统这边申请了,当线程使用完之后,也不是会给系统,而是放回池子里,以备下次使用。这样创建销毁线程,速度就更快了。......原创 2022-07-28 13:15:33 · 321 阅读 · 4 评论 -
【多线程】线程安全问题
例如还是上面的那个被两个synchronized修饰的代码块,此时线程a针对第一次加锁的时候,显然是能够加锁成功的,锁内部记录了当前占用这线程a,同时加锁次数为1,后续如果在对线程a加锁,此时就不是真正的加锁,而是单纯的把奇数给自增,加锁次数为2,后续在解锁的时候,先把奇数进行-1,当锁的计数加到0的时候,就真的解锁。可重入锁的意义就是降低了程序员的负担,提高了开发的效率,但是锁属于也付出了代价,在程序中需要更多的开销,维护锁属于哪个线程,并且加减计数,降低了运行效率。...原创 2022-07-27 15:41:54 · 1795 阅读 · 7 评论 -
【多线程】在多线程环境下实现一个定时器
描述一个任务使用优先队列来组织若干个任务,并且这个优先队列要带有阻塞实现一个schedule()方法来注册任务到队列中创建一个扫描线程,这个扫描线程不停的获取到队首元素,并且判定时间是否到达,另外需要注意的是让MyTask2类能够试吃比较,以及注意解决这里的忙等问题httpshttpshttpshttpshttps。...原创 2022-07-25 12:17:59 · 854 阅读 · 7 评论 -
【多线程】阻塞队列&生产者消费者模型
在日常开发中,处理多线程问题的一种典型的方式(生产者消费者模型)这里举一个恰当的例子相信大家在家里都包过饺子吧,在我们包饺子的时候,往往需要多个人一起分工协作。一个普通的做饺子的流程和面,擀饺子皮,包饺子,煮饺子,其中和面和煮饺子,这两个操作不太好分工。我们现在就说擀饺子皮和包饺子,这两个任务比较好分工。假设现在有A,B,C三个人一起擀饺子和包饺子方法一阻塞队列就可以生产者消费者模型中的交易场所。...原创 2022-07-24 14:58:00 · 471 阅读 · 8 评论 -
【多线程】实现一个线程安全的单例模式
文章目录1.什么是单例模式2. 单例模式的组成3.饿汉模式实例3.1在饿汉模式中为什么在创建实例的时候使用static修饰?3.2 判断该实例是否是线程安全的4.懒汉模式实例4.1 判断该实例是否是线程安全的,如果不是线程安全的,那么怎样修改可以成为线程安全的实例总结一下:1.什么是单例模式单例模式是设计模式中的一种,其实设计模式就好好比是一个棋谱,我们在日常下棋的时候会有一些经典的套路。那么在设计模式中也有这样的经典套路。这些经典的套路都是有大佬前辈们实现的。我们在写代码的时候,有很多经典的场景,在原创 2022-05-08 09:06:51 · 2766 阅读 · 8 评论 -
【多线程】线程的状态和线程安全问题
文章目录线程的状态1.NEW2.TERMINATED3.小结一下4.RUNNABLE5.TIMED_WAITING6.BLOCKED7.WAITING8.总结线程安全1.什么是线程安全,什么又是线程不安全?2.一个线程不安全的案例3.如何解决线程不安全问题?4.造成线程不安全的4大主要原因,和解决办法线程的状态1.NEWNEW:表示我们现在已经把线程类创建出来的,但是现在还没有使用start()方法进行线程启动。代码示例:2.TERMINATEDTERMINATED:表示线程在执行结束该原创 2022-05-02 18:59:43 · 2114 阅读 · 7 评论 -
【多线程】Thread类的使用和它的属性
文章目录创建线程方法一:继承Thread类方法二:实现Runnable接口中的run()方法方法三:利用内部类方法四:使用lambmd表达式使用线程的好处Thread类的其他属性和方法Thread的常见构造方法给一个线程起名字判断一个线程是否存活判断该线程是由是后台线程Thread的其他常见属性创建线程线程的中断线程的等待获取线程的引用线程的休眠在java中可以进行多线程编程,在java标准库中提供了一个Thread类,来表示线程操作。Thread类可以视为java标准库提供的一组解决多线程编程的一组AP原创 2022-04-12 11:19:31 · 566 阅读 · 11 评论 -
【多线程】进程以及进程和线程之间的区别和联系
文章目录1.1浅谈操作系统2.进程2.1 程相关概念2.2 操作系统是如何管理进程的?如何让一个进程正常工作?进程调度:2.3 并行和并发2.4 进程的独立性2.5 进程间通信1.1浅谈操作系统操作系统:首先操作系统是一个搞管理电脑软件的软件。对上:要提供一个提供软件稳定运行的一个工作环境。对下:要管理好各种硬件资源。如图:底层驱动是最接近硬件的软件2.进程2.1 程相关概念什么是进程呢?其实进程就是一个跑起来的程序(被执行的程序)。我们可以打开电脑中的任务管理区器,选择进程,就原创 2022-04-05 10:57:32 · 1389 阅读 · 4 评论