
并发编程
一只大马猴
既然选择了做这行,就要耐得住寂寞
展开
-
并发编程1:查看线程的stack信息
有时候写代码,不小心就写成了死循环,虽然几率不大,但是万一遇到,我们要知道怎么去排查这个问题。一般情况下,我们可以通过jps名称,查看进程号然后再通过jstack -l pid 查看进程的堆栈信息。 同时,我们写代码的时候,应该使用一些约定俗成的方法,避免产生死锁问题。1.避免一个线程同时获得多个锁2.避免一个线程在锁内部占用多个资源,尽量是一个锁占用一个资源3.多使用...原创 2018-11-07 22:24:35 · 358 阅读 · 0 评论 -
并发编程1:并发编程的起源和优缺点
并发编程的出现要源于摩尔定律的失败。什么是摩尔定律:摩尔定律不是一种客观存在或者经过验证的真理,他只是基于数据观察而推导出来的结论。按照预测的速度,计算能力会按照指数级别的速度增长,不久以后会拥有超强的计算能力,But,2004年,Intel宣布4GHz芯片的计划推迟到2005年,然后在2004年秋季,Intel宣布彻底取消4GHz的计划,也就是说摩尔定律的有效性超过了半个世纪然后歇逼了。...原创 2019-02-28 16:51:03 · 338 阅读 · 0 评论 -
并发编程2:新建线程的几种方式
在java中,通常有以下几种方式新建线程继承Thread类,重写run方法 实现Runnable接口 实现callable接口 FutureTask封装callable接口因为在java中,我们推荐的是接口编程(主要是因为java单继承却可以实现多接口),因此在前两种实现方式中,我们推荐用接口的方式。但是在实际开发过程中,要求开发工程师在需要创建线程的情况下,统一采用j...原创 2019-02-28 20:21:23 · 183 阅读 · 0 评论 -
并发编程3:操作线程
线程执行是有优先级的,共分三种:最高优先级,默认值是10 最低优先级,默认值是1 默认优先级,默认值是5线程自身带有一些操作,下面看看每个操作的作用以及用途:start() join() sleep() yield() interrupt() 守护线程1.start使该线程开始执行;Java 虚拟机调用该线程的run方法。结果是两个线程并发地运行;当前线程(从...原创 2019-03-02 14:08:56 · 193 阅读 · 0 评论 -
并发编程4:线程的几种状态以及状态间的相互转化
没看thread源码之前,对线程的状态认识,都是停留在别人的讲解上,通常都认为是以下7种状态:初始(NEW) 就绪(READY) 运行中(RUNNABLE) 等待(WAITING) 超时等待(TIMES_WAITING) 阻塞(BLOCKED) 终止(TERMINATED)大致线程状态的转化如下:今天偶然看thread源码的时候,发现,事实不是这样的。现在...原创 2019-03-02 17:06:29 · 466 阅读 · 0 评论 -
并发编程5:java内存模型以及happens-before
多线程的出现,就导致了线程安全问题的问世。出现线程安全问题一般是由两方面造成的:主内存和工作内存数据不一致 重排序既然由这两方面造成的,那就看看这两个东西到底是什么鬼吧。主内存和工作内存数据不一致java内存模型是共享内存的并发模型,线程之间主要通过读-写共享变量来完成隐式通信。1.哪些是共享变量在java程序中所有实例域,静态域和数组元素都是放在堆内存中(所有线程均可...转载 2019-03-13 18:28:30 · 175 阅读 · 0 评论 -
并发编程6:并发编程知识图谱,看完就知道该怎么学习并发编程了。
并发编程在面试中是经常被问到的考点。我在面试的时候经常发现,很多人想系统的学习一下并发编程的体系,但是不知道从何处开始,看书又有点乏味。故今天参照一下网上和书籍资料,对并发编程设计的内容,做一个简单的整理。方面后面按照体现章节的顺序,一点一点的学习并发编程。基础知识并发编程优缺点1.为什么用到并发编程?充分利用多核CPU的运算能力,方便业务拆分。2.并发编程的缺点有...原创 2019-07-24 17:33:59 · 1774 阅读 · 0 评论