多线程
码猿小铺
这个作者很懒,什么都没留下…
展开
-
十一、java多线程基础之锁的深度化
一、重入锁1.锁作为并发共享数据,保证一致性的工具,在JAVA平台有多种实现(如 synchronized(重量级) 和 ReentrantLock(轻量级)等等 ) 。这些已经写好提供的锁为我们开发提供了便利。重入锁,也叫做递归锁,指的是同一线程 外层函数获得锁之后 ,内层递归函数仍然有获取该锁的代码,但不受影响。2.在JAVA环境下 ReentrantLock 和synchronized ...原创 2020-01-07 13:51:14 · 164 阅读 · 0 评论 -
十、java多线程基础之合理配置线程池
一、背景1.产生阻塞的其他原因(IO操作):频繁的请求,读取数据库,循环IO操作这些都有可能发生阻塞。例如:http的post请求就想当与是一个独立的线程。任务可以理解为run()方法中的代码逻辑。二、CPU密集CPU密集的意思是该任务需要大量的运算,而没有阻塞,CPU一直全速运行。CPU密集任务只有在真正的多核CPU上才可能得到加速(通过多线程),而在单核CPU上,无论你开几个模...原创 2020-01-06 15:12:20 · 270 阅读 · 0 评论 -
九、java多线程基础之线程池的总结
一、什么是线程池1.Java中的线程池是运用场景最多的并发框架,几乎所有需要异步或并发执行任务的程序都可以使用线程池。在开发过程中,合理地使用线程池能够带来3个好处。第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。第二:提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。第三:提高线程的可管理性。线程是稀缺资源,如果无限制地创建,不仅会消耗系统资源,还...原创 2020-01-05 12:33:38 · 208 阅读 · 0 评论 -
八、java多线程基础之并发包知识点总结
一、背景1.前几个博客我们介绍了关于多线程的基础知识以及它们的实际例子,今天我们来说说java并发包下面的知识点,前几篇文章可以参考我之前的博客,同时如果那里有说的不对的,请欢迎留言指正。2.写这个博客的目的是为了提高下自身的知识网络,还有就是在实际项目中使用到的,同时也希望能帮助大家来更好的理解知识点,平时多积累下,潜移默化就形成了强大的知识网络了,废话不多说了,下面就让我们共同来学习下...原创 2020-01-04 19:04:21 · 526 阅读 · 0 评论 -
七、java多线程基础的总结
一、干货1.并发编程的三要素<1>.原子性:原子性指的是一个或者多个操作,要么全部执行并且在执行的过程中不被其他操作打断,要么就全部都不执行。<2>.可见性:可见性指多个线程操作一个共享变量时,其中一个线程对变量进行修改后,其他线程可以立即看到修改的结果。<3>.有序性:有序性,即程序的执行顺序按照代码的先后顺序来执行。2.实现可见性的方法有...原创 2020-01-03 09:04:30 · 193 阅读 · 0 评论 -
六、idea怎么debug多线程
一、背景1.最近在做一个多线程的需求,做完之后得需要启动debug模式来完成代码的调试工作,接下来就来说下我在实际的项目中怎么去联调多线程的。2.下面我们用一个小栗子来讲解下多线程下面的debug。二、代码1.代码(一个主线程,一个子线程)public class DaemonThread { public static void main(String[] args...原创 2020-01-02 13:40:55 · 6867 阅读 · 3 评论 -
四、java多线程基础之线程之间的通信
一、什么是多线程之间的通讯1.概念:多线程之间通讯,其实就是多个线程在操作同一个资源,但是操作的动作不同。二、多线程通讯模拟出现的问题1.需求:第一个线程写入(input)用户,另一个线程取读取(out)用户.实现读一个,写一个操作。2.代码// 共享对象class Res { // 姓名 public String name; // 性别 ...原创 2019-12-31 09:45:48 · 242 阅读 · 1 评论 -
三、java多线程基础之java内存模型(JMM)
一、多线程的三大特性1.原子性:即一个操作或者多个操作 要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行。一个很经典的例子就是银行账户转账问题:比如从账户A向账户B转1000元,那么必然包括2个操作:从账户A减去1000元,往账户B加上1000元。这2个操作必须要具备原子性才能保证不出现一些意外的问题。我们操作数据也是如此,比如i = i+1;其中就包括,读取i的值,计算...原创 2019-12-30 13:47:13 · 359 阅读 · 0 评论 -
二、java多线程基础之多线程安全总结以及分析
一、线程安全问题为什么会存在1.当多个线程同时共享,同一个全局变量或静态变量,做写的操作时,可能会发生数据冲突问题,也就是线程安全问题。但是做读操作是不会发生数据冲突问题。二、代码例子1.代码public class ThreadTrain implements Runnable { private int trainCount = 100; @Override...原创 2019-12-30 13:14:33 · 171 阅读 · 1 评论 -
一、java多线程基础知识的总结
一、线程与进程的区别1.线程其实就是一条执行路径,进程是独立应用程序的一个应用程序。2.线程是一条执行路径,多条执行路径同时执行,在进程中,会有N多个线程,进程是所有线程的集合。3.使用多线程目的就是为了提高程序效率。二、创建多线程的方式(以下三种方法不一一举例)1.第一种是继承Thread类,重写run方法。2.实现Runnable接口,重写run方法。3.使用匿名内...原创 2019-12-30 10:51:54 · 290 阅读 · 0 评论