![](https://img-blog.csdnimg.cn/20190927151124774.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
【Java】-- 多线程
java多线程
后端元宇宙
这个作者很懒,什么都没留下…
展开
-
【java多线程】---线程创建、start、run
线程创建、start、run 一、创建线程方式 java创建线程的方式,主要有三种:类Thread、接口Runnable、接口Callable。1、Thread和Runnable进行比较他们之间的区别 1、实现Runnable的类更具有健壮性,避免了单继承的局限。 2、Runnable更容易实现资源共享,能多个线程同时处理一个资源。不过对于共享数据而言,使用继承Thread,同样可以实现多...原创 2018-06-29 00:09:56 · 221 阅读 · 0 评论 -
【java多线程】---生命周期、线程通讯
java生命周期、线程通讯 一、生命周期 有关线程生命周期就要看下面这张图,围绕这张图讲解它的方法的含义,和不同方法间的区别。 1、yield()方法 yield()让当前正在运行的线程回到就绪,以允许具有相同优先级的其他线程获得运行的机会。但是,实际中无法保证yield()达到让步的目的,因为,让步的线程可能被线程调度程序再次选中。 同时yield()不会放弃锁资源...原创 2018-06-29 00:10:22 · 233 阅读 · 0 评论 -
【java多线程】(3)---synchronized、Lock
synchronized、Lock 一、概述1、出现线程不安全的原因是什么? 如果我们创建的多个线程,存在着共享数据,那么就有可能出现线程的安全问题:当其中一个线程操作共享数据时,还未操作完成,另外的线程就参与进来,导致对共享数据的操作出现问题。2、线程不安全解决办法 要求一个线程操作共享数据时,只有当其完成操作完成共享数据,其它线程才有机会执行共享数据。java提供了两种方式来...原创 2018-06-29 00:10:54 · 132 阅读 · 0 评论 -
【java多线程】(4)---volatile关键字
volatile关键字 一旦一个共享变量(类的成员变量、类的静态成员变量)被volatile修饰之后,那么就具备了两层语义: 1)保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个变量的值,这新值对其他线程来说是立即可见的。 2)禁止进行指令重排序。 想要深刻的理解这两句话,首先得了解java的内存模型和并发编程中的原子性、可见性、排序性。 一、并发编...原创 2018-08-09 23:31:42 · 167 阅读 · 0 评论 -
java多线程(5)---ThreadPoolExecutor
ThreadPoolExecutor 官方API解释线程池的好处: (1)通过重用线程池中的线程,来减少每个线程创建和销毁的性能开销。 (2)对线程进行一些维护和管理,比如定时开始,周期执行,并发数控制等等。 一、Executor Executor是一个接口,跟线程池有关的基本都要跟他打交道。下面是常用的ThreadPoolExecutor的关系。 Exec...原创 2018-09-02 19:45:13 · 583 阅读 · 0 评论 -
java多线程(7)---Condition
Condition 一、Condition概述 在线程的同步时可以使一个线程阻塞而等待一个信号,同时放弃锁使其他线程可以能竞争到锁。 在synchronized中我们可以使用Object的wait()和notify方法实现这种等待和唤醒。 在Lock可以实现相同的功能就是通过Condition。Condition中的await()和signa...原创 2018-09-02 19:47:43 · 154 阅读 · 0 评论 -
java多线程(8)---阻塞队列
阻塞队列 再写阻塞列队之前,我写了一篇有关queue集合相关博客,也主要是为这篇做铺垫的。 网址:【java提高】---queue集合 在这篇博客中我们接触的队列都是非阻塞队列,比如PriorityQueue、LinkedList(LinkedList是双向链表,它实现了Dequeue接口)。 使用非阻塞队列的时候有一个很大问题就是:它不会对当前线程产生...原创 2018-09-02 19:48:18 · 4842 阅读 · 1 评论