<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[leimeng123的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/leimeng123</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; leimeng123]]></copyright><item><title><![CDATA[Fork/join框架]]></title><link>https://blog.youkuaiyun.com/leimeng123/article/details/121195981</link><guid>https://blog.youkuaiyun.com/leimeng123/article/details/121195981</guid><author>leimeng123</author><pubDate>Sun, 07 Nov 2021 19:48:43 +0800</pubDate><description><![CDATA[1 Frok/Join框架简介

Fork/Join框架是Java7提供了的一个用于并行执行的任务的框架，是一个把大任务分割成若干个小任务，最终汇总每个小任务结果后得到大任务结果的框架。


	Fork 递归地将任务分解为较小的独立子任务，直到它们足够简单以便异步执行。
	
	
	Join 将所有子任务的结果递归地连接成单个结果，或者在返回void的任务的情况下，程序只是等待每个子任务执行完毕。
	
比如计算 1+2+......+10000，可以分割成10个子任务，每个子任务对1000个数进行求和，最终汇]]></description><category></category></item><item><title><![CDATA[Semaphore — 多线程中的信号量]]></title><link>https://blog.youkuaiyun.com/leimeng123/article/details/120992744</link><guid>https://blog.youkuaiyun.com/leimeng123/article/details/120992744</guid><author>leimeng123</author><pubDate>Wed, 27 Oct 2021 14:42:36 +0800</pubDate><description><![CDATA[1.Semaphore简介

Semaphore——信号量，通过信号量可以对同一资源访问做数量的限制（控制并发的线程数）。synchronized或者ReentrantLock都是限定每次只能有一个线程并发访问共享资源；而Semaphore可以控制更多数量的线程访问资源，但是不能超过信号量的准入数。


可以把它简单的理解成我们停车场入口立着的那个显示屏，每有一辆车进入停车场显示屏就会显示剩余车位减1，每有一辆车从停车场出去，显示屏上显示的剩余车辆就会加1，当显示屏上的剩余车位为0时，停车场入口的栏杆就不会]]></description><category></category></item><item><title><![CDATA[Exchanger — 高并发中的交换器]]></title><link>https://blog.youkuaiyun.com/leimeng123/article/details/120992665</link><guid>https://blog.youkuaiyun.com/leimeng123/article/details/120992665</guid><author>leimeng123</author><pubDate>Wed, 27 Oct 2021 14:40:44 +0800</pubDate><description><![CDATA[1.Exchanger简介

Exchanger — 交换器，是JDK1.5时引入的一个同步器，从字面上就可以看出，这个类的主要作用是交换数据。

如果两个线程并行处理，但在某个时刻需要互相交换自己已经处理完的中间数据，然后才能继续往下执行。这个时候就可以使用 Exchanger。








Thread1线程到达栅栏后，会首先观察有没其它线程已经到达栅栏，如果没有就会等待，如果已经有其它线程（Thread2）已经到达了，就会以成对的方式交换各自携带的信息，因此Exchanger非常适合用于两个线程.]]></description><category></category></item><item><title><![CDATA[CyclicBarrier — 多线程中的循环栅栏]]></title><link>https://blog.youkuaiyun.com/leimeng123/article/details/120992570</link><guid>https://blog.youkuaiyun.com/leimeng123/article/details/120992570</guid><author>leimeng123</author><pubDate>Wed, 27 Oct 2021 14:38:08 +0800</pubDate><description><![CDATA[1. CyclicBarrier简介

现实生活中我们经常会遇到这样的情景，在进行某个活动前需要等待人全部都齐了才开始。例如吃饭时要等全家人都上座了才动筷子，旅游时要等全部人都到齐了才出发，比赛时要等运动员都上场后才开始。

在JUC包中为我们提供了一个同步工具类能够很好的模拟这类场景，它就是CyclicBarrier类。利用CyclicBarrier类可以实现一组线程相互等待，当所有线程都到达某个屏障点（栅栏）后再进行后续的操作。下图演示了这一过程：





CyclicBarrier可以使一定数量的.]]></description><category></category></item><item><title><![CDATA[ReentrantLock — 可重入锁]]></title><link>https://blog.youkuaiyun.com/leimeng123/article/details/120989834</link><guid>https://blog.youkuaiyun.com/leimeng123/article/details/120989834</guid><author>leimeng123</author><pubDate>Wed, 27 Oct 2021 11:43:18 +0800</pubDate><description><![CDATA[J.U.C

Java.util.concurrent（java并发应用包） 是在并发编程中比较常用的工具类，里面包含很多用来在并发场景中使用的组件。比如线程池、阻塞队列、计时器、同步器、并发集合等等。并发包的作者是大名鼎鼎的 Doug Lea。

ReentrantLock

Lock在J.U.C中是最核心的组件，J.U.C 包中的所有组件绝大部分的组件都有用到了 Lock。在 Lock 接口出现之前，Java中的应用程序对于多线程的并发安全处理只能基于synchronized关键字来解决。Reentra]]></description><category></category></item><item><title><![CDATA[Executor & ThreadPoolExecutor 线程池详解]]></title><link>https://blog.youkuaiyun.com/leimeng123/article/details/120989117</link><guid>https://blog.youkuaiyun.com/leimeng123/article/details/120989117</guid><author>leimeng123</author><pubDate>Wed, 27 Oct 2021 11:32:38 +0800</pubDate><description><![CDATA[在 Java 中，如果每个请求到达就创建一个新线程，创建和销毁线程花费的时间和消耗的系统资源都相当大，甚至可能要比在处理实际的用户请求的时间和资源要多的多。如果在一个 Jvm 里创建太多的线程，可能会使系统由于过度消耗内存或“切换过度”而导致系统资源不足。

为了解决这个问题,就有了线程池的概念，线程池的核心逻辑是提前创建好若干个线程放在一个容器中。如果有任务需要处理，则将任务直接分配给线程池中的线程来执行就行，任务处理完以后这个线程不会被销毁，而是等待后续分配任务。同时通过线程池来重复管理线程还可以避免创]]></description><category></category></item><item><title><![CDATA[多线程之可见性&&有序性]]></title><link>https://blog.youkuaiyun.com/leimeng123/article/details/120709241</link><guid>https://blog.youkuaiyun.com/leimeng123/article/details/120709241</guid><author>leimeng123</author><pubDate>Mon, 11 Oct 2021 18:53:06 +0800</pubDate><description><![CDATA[这里写自定义目录标题可见性&amp;&amp;有序性一、可见性1、什么是可见性2、解决可见性问题二、有序性1、指令重排序2、双重检查锁（double checked locking）

可见性&amp;&amp;有序性
一、可见性
1、什么是可见性
CPU会从缓存中取值：
a.java内存模型规定所有的变量都是存在主存中，每个线程都有自己的工作内存。线程对变量的所有操作都必须在工作内存中进行，而不能直接对主存进行操作。不同线程之间无法直接访问对方工作内存中的变量。线程间变量的值传递均需要通过主内存来完成。
]]></description><category></category></item><item><title><![CDATA[线程的创建 — Thread与Runnable详解]]></title><link>https://blog.youkuaiyun.com/leimeng123/article/details/120303114</link><guid>https://blog.youkuaiyun.com/leimeng123/article/details/120303114</guid><author>leimeng123</author><pubDate>Wed, 15 Sep 2021 10:26:43 +0800</pubDate><description><![CDATA[一、实现多线程的两种基本方式

1、继承Thread方式 &amp; 实现Runnable方式


//1、继承Thread方式
public class MyThread extends Thread{
    ...
  @Override
  public void run(){
     ...
   }
}
​
MyThread mt = new MyThread();//创建线程
mt.start();//启动线程,调用的是父类Thread类的start()方法 
​
//2、实...]]></description><category></category></item><item><title><![CDATA[java8_并行与并发]]></title><link>https://blog.youkuaiyun.com/leimeng123/article/details/109722876</link><guid>https://blog.youkuaiyun.com/leimeng123/article/details/109722876</guid><author>leimeng123</author><pubDate>Mon, 16 Nov 2020 15:57:31 +0800</pubDate><description><![CDATA[并行与并发
并发：多个任务可以在重叠的时间段内运行。

并行：多个任务可以同时运行。

1.基本概念
1.1 程序/进程/线程
程序：静态单元
进程：是执行程序的一次过程(动态)，持有资源（共享内存，共享文件和线程），系统资源分配的单位 —— idea eclipse QQ
线程： CPU调度和执行的单位 线程是系统中最小的执行单元/同一进程中有多个线程/线程共享进程的资源 ——  idea 源代码文本编辑、源代码编译、文本校验
​			很多线程是模拟出来的（类似同时在做），真正的多线程是指有多个CPU，即]]></description><category></category></item><item><title><![CDATA[java8 Lambda表达式+Function包]]></title><link>https://blog.youkuaiyun.com/leimeng123/article/details/109676358</link><guid>https://blog.youkuaiyun.com/leimeng123/article/details/109676358</guid><author>leimeng123</author><pubDate>Fri, 13 Nov 2020 15:47:42 +0800</pubDate><description><![CDATA[typora-root-url: ./

​
Lambda表达式
​		函数式编程是一种相对于命令式编程的编程范式，命令式编程关注的是怎么做，函数式编程关注的是做什么，不需要关注实现的细节。
1、lamda表达式简介
什么是lambda?
​	我们知道，对于一个Java变量，我们可以赋给其一个“值”，如果你想把“一块代码”赋给一个Java变量，应该怎么做呢？

比如，把右边那块代码赋给一个叫做aBlockOfCode的Java变量：

​	在Java 8之前，这个是做不到的。但是Java 8问世之后，利用.]]></description><category></category></item><item><title><![CDATA[Spring boot预备知识——maven学习笔记（项目管理工具）]]></title><link>https://blog.youkuaiyun.com/leimeng123/article/details/104593907</link><guid>https://blog.youkuaiyun.com/leimeng123/article/details/104593907</guid><author>leimeng123</author><pubDate>Sun, 01 Mar 2020 16:20:32 +0800</pubDate><description><![CDATA[Maven

一.Maven介绍

1.Maven是什么？

1）Maven是基于java平台（意味着我们要配置jdk）的自动化构建工具。

基于项目对象模型（缩写：POM）概念，Maven就能管理一个项目的构建、报告和文档等步骤。

构建： 以“Java源文件”，“框架配置文件”，“HTML”,“图片”等为原料，去"生产"一个可以运行的项目的过程。

例：Java源文件—&gt;编译—&gt;....]]></description><category></category></item></channel></rss>