<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Evan-Y的博客]]></title><description><![CDATA[Stay Hungry, Stay Foolish!]]></description><link>https://blog.youkuaiyun.com/aasyv</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; aasyv]]></copyright><item><title><![CDATA[JAVA多线程（8）——线程池 ThreadPoolExecutor]]></title><link>https://blog.youkuaiyun.com/aasyv/article/details/79953785</link><guid>https://blog.youkuaiyun.com/aasyv/article/details/79953785</guid><author>aasyv</author><pubDate>Thu, 19 Apr 2018 22:20:26 +0800</pubDate><description><![CDATA[原文出处： 海 子在前面的文章中，我们使用线程的时候就去创建一个线程，这样实现起来非常简便，但是就会有一个问题：如果并发的线程数量很多，并且每个线程都是执行一个时间很短的任务就结束了，这样频繁创建线程就会大大降低系统的效率，因为频繁创建线程和销毁线程需要时间。那么有没有一种办法使得线程可以复用，就是执行完一个任务，并不被销毁，而是可以继续执行其他的任务？在Java中可以通过线程池来达到这样的效果。...]]></description><category></category></item><item><title><![CDATA[JAVA集合类——HashMap、HashTable和ConcurrentHashMap]]></title><link>https://blog.youkuaiyun.com/aasyv/article/details/79997571</link><guid>https://blog.youkuaiyun.com/aasyv/article/details/79997571</guid><author>aasyv</author><pubDate>Thu, 19 Apr 2018 12:05:56 +0800</pubDate><description><![CDATA[HashMap和HashTable的对比                                                                                                                                          HashMap和Hashtable都实现了Map接口，但决定用哪一个之前先要弄清楚它...]]></description><category></category></item><item><title><![CDATA[JAVA集合类——HashMap]]></title><link>https://blog.youkuaiyun.com/aasyv/article/details/79993338</link><guid>https://blog.youkuaiyun.com/aasyv/article/details/79993338</guid><author>aasyv</author><pubDate>Wed, 18 Apr 2018 21:42:40 +0800</pubDate><description><![CDATA[HashMap中存储的是键值对(即key-value对)，根据key取得hash值，然后计算出数组下标（对key键调用hashCode()方法，返回的hashCode用于找到bucket位置来储存Entry对象），如果多个key对应到同一个下标，就用链表串起来。整体结构如下：HashMap的主干是一个Entry数组。Entry是HashMap的基本组成单元，每一个Entry包含一个key-valu...]]></description><category></category></item><item><title><![CDATA[Java多线程（7）——Lock类]]></title><link>https://blog.youkuaiyun.com/aasyv/article/details/79953746</link><guid>https://blog.youkuaiyun.com/aasyv/article/details/79953746</guid><author>aasyv</author><pubDate>Tue, 17 Apr 2018 22:09:53 +0800</pubDate><description><![CDATA[synchronized把代码块声明为 synchronized，有两个重要后果，通常是指该代码具有 原子性（atomicity）和 可见性（visibility）但是它有一些功能性的限制：它无法中断一个正在等候获得锁的线程；也无法通过投票得到锁，如果不想等下去，也就没法得到锁；同步还要求锁的释放只能在与获得锁所在的堆栈帧相同的堆栈帧中进行，多数情况下，这没问题（而且与异常处理交互得很好），但是，...]]></description><category></category></item><item><title><![CDATA[JAVA多线程（6）——synchronized和volatile]]></title><link>https://blog.youkuaiyun.com/aasyv/article/details/79953534</link><guid>https://blog.youkuaiyun.com/aasyv/article/details/79953534</guid><author>aasyv</author><pubDate>Sun, 15 Apr 2018 21:33:21 +0800</pubDate><description><![CDATA[0. 前言转载请注明出处：http://blog.youkuaiyun.com/seu_calvin/article/details/52370068在多线程中，提到线程安全、线程同步，我们经常会想到两个关键字：volatile和synchronized，那么这两者有什么区别呢？1. volatile修饰的变量具有可见性volatile是变量修饰符，其修饰的变量具有可见性。可见性也就是说一旦某个线程修改了该被...]]></description><category></category></item><item><title><![CDATA[JAVA多线程（5）——Synchronized、wait、notify]]></title><link>https://blog.youkuaiyun.com/aasyv/article/details/79952128</link><guid>https://blog.youkuaiyun.com/aasyv/article/details/79952128</guid><author>aasyv</author><pubDate>Sun, 15 Apr 2018 21:08:04 +0800</pubDate><description><![CDATA[一、Synchronizedsynchronized中文解释是同步，那么什么是同步呢，解释就是程序中用于控制不同线程间操作发生相对顺序的机制，通俗来讲就是2点，第一要有多线程，第二当多个线程同时竞争某个资源的时候会有先后顺序。在java中有三种写synchronized的方式：第一种：写在普通方法的前面，这种表示对实例对象加锁第二种：写在静态方法前面，这种表示对类对象加锁第三种：写在代码块中，锁是...]]></description><category></category></item><item><title><![CDATA[JAVA多线程（4）——线程的状态]]></title><link>https://blog.youkuaiyun.com/aasyv/article/details/79950157</link><guid>https://blog.youkuaiyun.com/aasyv/article/details/79950157</guid><author>aasyv</author><pubDate>Sun, 15 Apr 2018 16:35:39 +0800</pubDate><description><![CDATA[Java中的线程的生命周期大体可分为5种状态：1、新建(NEW)：新创建了一个线程对象2、可运行(RUNNABLE)：线程对象创建后，其他线程(比如main线程）调用了该对象的start()方法。该状态的线程位于可运行线程池中，等待被线程调度选中，获取cpu 的使用权3、阻塞(BLOCKED)：阻塞状态是指线程因为某种原因放弃了cpu 使用权，也即让出了cpu timeslice，暂时停止运行。直...]]></description><category></category></item><item><title><![CDATA[JAVA多线程（3）——Callable、Future和FutureTask]]></title><link>https://blog.youkuaiyun.com/aasyv/article/details/79949547</link><guid>https://blog.youkuaiyun.com/aasyv/article/details/79949547</guid><author>aasyv</author><pubDate>Sun, 15 Apr 2018 15:35:16 +0800</pubDate><description><![CDATA[Java 1.5开始，就提供了Callable和Future，通过它们可以在子线程任务执行完毕之后得到任务执行结果，今天我们就来讨论一下Callable、Future和FutureTask三个类的使用方法。一、Runnable和Callable首先来看一下Runnable，它是一个接口，在它里面只声明了一个run()方法：public interface Runnable {
    /**
  ...]]></description><category></category></item><item><title><![CDATA[JAVA多线程（2）-----线程的创建]]></title><link>https://blog.youkuaiyun.com/aasyv/article/details/79945292</link><guid>https://blog.youkuaiyun.com/aasyv/article/details/79945292</guid><author>aasyv</author><pubDate>Sat, 14 Apr 2018 23:11:14 +0800</pubDate><description><![CDATA[Java中主要提高了三种方式来创建线程1）继承Thread类2）实现Runnable接口3）使用Callable和Future---------------------继承Thread类-------------------一般步骤如下：1、定义Thread类的子类，并重写该类的run()方法，该方法的方法体就是线程需要完成的任务，run()方法也称为线程执行体。2、创建Thread子类的实例，也...]]></description><category></category></item><item><title><![CDATA[JAVA多线程（1）——认识线程（与进程的比较）]]></title><link>https://blog.youkuaiyun.com/aasyv/article/details/79944674</link><guid>https://blog.youkuaiyun.com/aasyv/article/details/79944674</guid><author>aasyv</author><pubDate>Sat, 14 Apr 2018 22:39:00 +0800</pubDate><description><![CDATA[下面这段解释摘自知乎：https://www.zhihu.com/question/25532384/answer/81152571首先说下背景：CPU+RAM+各种资源（比如显卡，光驱，键盘，GPS, 等等外设）构成我们的电脑，但是电脑的运行，实际就是CPU和相关寄存器以及RAM之间的事情。一个最最基础的事实：CPU太快，太快，太快了，寄存器仅仅能够追的上他的脚步，RAM和别的挂在各总线上的设备...]]></description><category></category></item></channel></rss>