# java-concurrent
**Repository Path**: google853089986/java-concurrent
## Basic Information
- **Project Name**: java-concurrent
- **Description**: java高并发编程.
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2018-02-18
- **Last Updated**: 2021-10-15
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
## [博客地址](https://my.oschina.net/u/3703858/blog?catalog=5741365&temp=1518940765981)
### java-concurrent
### java高并发编程
### 你应该先了解这些
>*1.线程的概念
线程:本人通俗理解一个程序里头不同的执行路径可以放在不同的cpu里面同步运行
>*2.如何启动一个线程
>*3.基本的线程同步
>*4[com.test包对应的博客地址](https://my.oschina.net/u/3703858/blog/1798627)
#### 并行流水线
``并发算法虽然可以发挥多核CPU的性能.但是很不幸的是,并非所有的计算都可以改造成并发的形式.``
`` 那么什么样的算法是无法使用并发进行计算的呢?简单来说,执行过程中有数据相关的运算都是无法完美并行化的 ``
``假如我们要计算(B+C)*B/2,如果B+C没有执行完成,则永远算不出(B+C)*B,这就是数据相关性.如果线程执行时,所需的数据存在这种依赖关系,``
``那么就没办法将他们完美的并行化,如果遇到这种情况有没有什么补救措施呢.答案肯定是有的,那就是借鉴日常生产中的流水线思想``
比如,现在要生产一批小玩偶。小玩偶的制作分为四个步骤
为了加快制作玩具的进度,我们不可能叫四个人同时加工一个玩具,因为这四个步骤有着严重的依赖关系。 如果没有身体,就没有地方安装四肢,如果没有组装完成,就不能穿衣服,如果没有穿上衣服,就不能包装发货。因此,找四个人来做一个玩偶是毫无意义的。 但是,如果你现在要制作的不是1只玩偶,而是1万只玩偶,那情况就不同了。你可以找四个人,第一个人只负责组装身体, 完成后交给第二个人: 第二个人只负责安装头部和四肢,交付第三人: 第三人只负责穿衣服, 并交付第四人: 第四人只负责包装发货。这样所有人都可以一一起工作,共同完成任务,而整个时间周期也能缩短到原来的1/4 左右, 这就是流水线的思想。一旦流水线满载,每次只需要一步(假设一个玩偶需要四步) 就可以产生一个玩偶
##### 看代码com.test.concurrent #### 并行搜索
搜索几乎每一个软件都必不可少的功能.对于有序数据,通常可以采用二分法查找.对于无序数据,则只能挨个查找. 给定一个数组,我们要查找满足条件的元素,对于串行程序来说,只要遍历一下数组就可以得到结果.但是如果要使用并行的方式, 则需要增加一些线程间的通信机制,使各个线程可以有效地运行.
##### 看代码com.test.concurrent1并行搜索