![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程
文章平均质量分 89
多线程
tan1231
这个作者很懒,什么都没留下…
展开
-
(五)synchronized和ReentrantLock
一、synchronized简介synchronized是关键字,用来实现同步锁,非公平锁,可重入锁公平锁:是按照锁申请的顺序来获取锁,线程直接进入同步队列中排队,队列中的第一个线程才能获得到锁。非公平锁:非公平锁是线程申请锁时,直接尝试加锁,获取不到才会进入到同步队列排队。如果此时该线程刚好获取到了锁,那么它不需要因为队列中有其他线程在排队而阻塞,省去了CPU唤醒该线程的开销。而对于已经在同步队列中的线程,仍然是按照先进先出的公平规则获取锁~什么是可重入?同一个线程可以反复获取锁多次,原创 2022-02-10 17:30:27 · 422 阅读 · 0 评论 -
(四)ThreadLocal
参考原文一、简介首先ThreadLocal 是一个线程的局部变量(其实就是一个Map),ThreadLocal会为每个使用该变量的线程提供独立的变量副本,所以每一个线程都可以独立地改变自己的副本,将对象的可见范围限制在同一个线程内,而不会影响其它线程所对应的副本。这样做其实就是以空间换时间的方式(与synchronized相反),以耗费内存为代价,但大大减少了线程同步(如synchronized)所带来性能消耗以及减少了线程并发控制的复杂度。public class Demo2 { s原创 2022-02-10 11:06:52 · 1213 阅读 · 0 评论 -
(三)关键字volatile
原创 2022-02-10 09:30:57 · 183 阅读 · 0 评论 -
(二)线程池
线程池简介概念线程池就是首先创建一些线程,它们的集合称为线程池。使用线程池可以很好地提高性能,线程池在系统启动时即创建大量空闲的线程,程序将一个任务传给线程池,线程池就会启动一条线程来执行这个任务,执行结束以后,该线程并不会死亡,而是再次返回线程池中成为空闲状态,等待执行下一个任务。线程池的工作机制在线程池的编程模式下,任务是提交给整个线程池,而不是直接提交给某个线程,线程池在拿到任务后,就在内部寻找是否有空闲的线程,如果有,则将任务交给某个空闲的线程。一个线程同时只能执行一个任务,但可以同时原创 2022-02-09 11:16:58 · 1024 阅读 · 0 评论 -
(一)多线程基础
多线程执行过程主线程:public class TestThread { public static void main(String[] args) { MyThread mt = new MyThread("小强"); mt.start(); for (int i = 0; i < 20000 ; i++) { System.out.println("旺财"+i); } }}自定义线原创 2022-02-09 10:56:00 · 276 阅读 · 0 评论