Java并发编程
多线程、线程池、并发编程、线程交互
坐等故国扶风起
这个作者很懒,什么都没留下…
展开
-
001- 什么是进程
1 - 进程程序:计算机指令集合,一组静态的指令集,比如写的微信小程序的代码、记事本.exe等程序在自己地址空间的一次活动,就是进程,更多细节 查看 进程详解进程简单举例进程: 拥有独立地址空间, 是程序在自己的地址空间的一次执行活动。 比如打开一次记事本,就是一个进程主要目的 :操作系统都是多任务的,一个进程如果失败,最好不要影响其他进程,提高操作系统的强壮性下图 就是...原创 2019-09-03 14:41:51 · 312 阅读 · 0 评论 -
009 - synchronized原理
本片博文 ,参考 [译]Java虚拟机是如何执行线程同步的 ,加一些个人理解。1 - Synchronized 简介本文 参考 synchronized 理解synchronized关键字在需要原子性、可见性和有序性这三种特性的时候都可以作为其中一种解决方案,看起来是“万能”的。的确,大部分并发控制操作都能使用synchronized来完成 ,但实际上synchronized有...原创 2019-09-03 15:13:19 · 122 阅读 · 0 评论 -
008 - Java并发中加锁原理和乐观锁
本片博文 参考 “深入理解CAS算法原理” ,更多细节请查阅原博客。 添加一些个人理解,如果理解有误,请提出宝贵意见1. Java中锁的基本介绍对象和类的锁只要是共享区域,就需要处理同步问题,下边是基本流程虚拟机给每个对象和类都分配一个锁同一时刻,只有一个线程可以拥有 这个类和对象如果一个线程想要获得某个类或者对象的锁,需要询问虚拟机当线程不再需要锁时,他再把锁还给虚拟机,...原创 2019-09-03 15:12:12 · 155 阅读 · 0 评论 -
007- 并发编程问题和原则
22之前已经描述过,JMM(Java的内存模型)、线程之间的通信方式。 接下来,主要讲一下并发编程中遇到的问题,JMM如何解决这些问题, 参考资料 : 全面理解Java内存模型1 - 并发编程的问题简单来说,并发编程需要处理好 :原子性、可见性、有序性1.1 原子性问题原子性问题原子性: 指的是一个操作不可中断,比如赋值操作,对于共享变量A, 一个线程赋值成1,一个线...原创 2019-09-03 15:07:59 · 154 阅读 · 0 评论 -
006 - 理解Java内存模型
本篇文章参考自全面理解Java内存模型(JMM)及volatile关键字,更多细节可以查看原博文,本文主要是做一个简单的总结1. Java内存模型概述Java内存模型(即Java Memory Model,简称JMM) 本身是一种抽象的概念,它描述的是一组规则或规范 主要目的是 "解决Java并发编程中多线程通过共享内存进行通信时,存在的原子性、可见性(缓存一致性)以及有序性问...原创 2019-09-03 15:00:03 · 145 阅读 · 0 评论 -
005 - Java线程之间通信和同步
并发编程中需要考虑, 线程之间如何通信,如何解决同步问题1 线程之间通信1.1 线程之间的通信线程的通信是指线程之间以何种机制来交换信息,目的是为了能够让线程之间相互发送信号。另外,线程通信还能够使得线程等待其它线程的信号,更多细节可以参考线程之间的通信(thread signal)在命令式编程中,线程之间的通信机制有两种共享内存和消息传递通过共享内存实现线程通信,比...原创 2019-09-03 14:53:54 · 135 阅读 · 0 评论 -
004 - 线程状态切换
1 . 线程切换线程之间几种状态 ,可以参考 线程的状态 , java线程状态切换线程之间状态(个人理解) :刚创建线程 : new Thread() , 是 Thread.NEW状态start()之后,处于Thread.RUNNABLE状态未获得cpu时 ,是RUNNABLE状态; 获得cpu转为running状态running状态下,遇到sleep()...原创 2019-09-03 14:52:45 · 152 阅读 · 0 评论 -
003 - 创建线程的方式
1 - 简单代码示例继承Thread类public class PrimeThread extends Thread { @Override public void run() { for (int i = 0; i < 10; i++) { System.out.println(Thread.currentThread()....原创 2019-09-03 14:44:13 · 72 阅读 · 0 评论 -
002 - 什么是线程
1 - 线程简单理解,线程就是进程中一条执行路线 ,一个单一的控制执行流程。比如一个进程是"读取后台数据同时渲染到用户界面反馈给用户",因为读取用户数据时间长,所以单开一个线程单独处理此事,另有一个渲染页面线程和进程一样,每个线程都有独立的控制流程,由操作系统调用不同的地方时,同一个进程的各个线程之间是共享存储空间。这样做,好处是方便通信,缺点是不利于同步一个进程可以拥有多个线程...原创 2019-09-03 14:43:18 · 103 阅读 · 0 评论 -
010 - 多线程交互
1 - 使用join线程间排队Join () :public final void join() throws InterruptedExceptionAPI中意思是,join()是等待线程结束示例代码class Sleeper extends Thread{ public void run(){ println("Sleeper线程id=" + Thread....原创 2019-09-03 15:14:59 · 145 阅读 · 0 评论