<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[jinggod的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/jinggod</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; jinggod]]></copyright><item><title><![CDATA[Executor框架（一）Executor框架简介]]></title><link>https://blog.youkuaiyun.com/jinggod/article/details/78766439</link><guid>https://blog.youkuaiyun.com/jinggod/article/details/78766439</guid><author>jinggod</author><pubDate>Sun, 10 Dec 2017 21:36:59 +0800</pubDate><description><![CDATA[Executor框架简介Executor框架的两级调度模型  在HotSpot VM的线程模型中，Java线程被一对一映射为本地操作系统线程。Java线程启动时会创建一个本地操作系统线程；当Java线程终止时，这个操作系统线程也会被回收。操作系统会调用所有线程并将他们分配给可用的CPU。 
  可以将此种模式分为两层，在上层，Java多线程程序通常把应用程序分解为若干任务，然后使用用户级的调度器（E]]></description><category></category></item><item><title><![CDATA[并发工具类（五） Phaser类]]></title><link>https://blog.youkuaiyun.com/jinggod/article/details/78704382</link><guid>https://blog.youkuaiyun.com/jinggod/article/details/78704382</guid><author>jinggod</author><pubDate>Mon, 04 Dec 2017 03:23:18 +0800</pubDate><description><![CDATA[前言  JDK中为了处理线程之间的同步问题，除了提供锁机制之外，还提供了几个非常有用的并发工具类：CountDownLatch、CyclicBarrier、Semphore、Exchanger、Phaser；  
  CountDownLatch、CyclicBarrier、Semphore、Phaser 这四个工具类提供一种并发流程的控制手段；而Exchanger工具类则提供了在线程之间交换数据的]]></description><category></category></item><item><title><![CDATA[并发工具类（四）线程间的交换数据 Exchanger]]></title><link>https://blog.youkuaiyun.com/jinggod/article/details/78701722</link><guid>https://blog.youkuaiyun.com/jinggod/article/details/78701722</guid><author>jinggod</author><pubDate>Sun, 03 Dec 2017 16:14:38 +0800</pubDate><description><![CDATA[前言

  JDK中为了处理线程之间的同步问题，除了提供锁机制之外，还提供了几个非常有用的并发工具类：CountDownLatch、CyclicBarrier、Semphore、Exchanger；  
  CountDownLatch、CyclicBarrier、Semphore 这三个工具类提供一种并发流程的控制手段；而Exchanger工具类则提供了在线程之间交换数据的一种手段。



简介]]></description><category></category></item><item><title><![CDATA[并发工具类（三）控制并发线程的数量 Semphore]]></title><link>https://blog.youkuaiyun.com/jinggod/article/details/78671694</link><guid>https://blog.youkuaiyun.com/jinggod/article/details/78671694</guid><author>jinggod</author><pubDate>Sun, 03 Dec 2017 14:55:01 +0800</pubDate><description><![CDATA[前言  JDK中为了处理线程之间的同步问题，除了提供锁机制之外，还提供了几个非常有用的并发工具类：CountDownLatch、CyclicBarrier、Semphore、Exchanger；  
CountDownLatch、CyclicBarrier、Semphore 这三个工具类提供一种并发流程的控制手段；而Exchanger工具类则提供了在线程之间交换数据的一种手段。简介  Semapho]]></description><category></category></item><item><title><![CDATA[并发工具类（二）同步屏障CyclicBarrier]]></title><link>https://blog.youkuaiyun.com/jinggod/article/details/78546590</link><guid>https://blog.youkuaiyun.com/jinggod/article/details/78546590</guid><author>jinggod</author><pubDate>Thu, 30 Nov 2017 01:47:12 +0800</pubDate><description><![CDATA[前言

  JDK中为了处理线程之间的同步问题，除了提供锁机制之外，还提供了几个非常有用的并发工具类：CountDownLatch、CyclicBarrier、Semphore、Exchanger；  
CountDownLatch、CyclicBarrier、Semphore 这三个工具类提供一种并发流程的控制手段；而Exchanger工具类则提供了在线程之间交换数据的一种手段。]]></description><category></category></item><item><title><![CDATA[并发工具类（一）等待多线程完成的CountDownLatch]]></title><link>https://blog.youkuaiyun.com/jinggod/article/details/78536761</link><guid>https://blog.youkuaiyun.com/jinggod/article/details/78536761</guid><author>jinggod</author><pubDate>Wed, 15 Nov 2017 01:50:34 +0800</pubDate><description><![CDATA[前言  JDK中为了处理线程之间的同步问题，除了提供锁机制之外，还提供了几个非常有用的并发工具类：CountDownLatch、CyclicBarrier、Semphore、Exchanger； 
CountDownLatch、CyclicBarrier、Semphore 这三个工具类提供一种并发流程的控制手段；而Exchanger工具类则提供了在线程之间交换数据的一种手段。简介  CountDow]]></description><category></category></item><item><title><![CDATA[显式锁（四）--- Lock的等待/通知机制Condition]]></title><link>https://blog.youkuaiyun.com/jinggod/article/details/78536493</link><guid>https://blog.youkuaiyun.com/jinggod/article/details/78536493</guid><author>jinggod</author><pubDate>Tue, 14 Nov 2017 23:43:13 +0800</pubDate><description><![CDATA[任意一个Java对象，都拥有一组监视器方法（定义在根类Object上），主要包括：wait( )、wait(long timeout)、notify（）、notifyAll（）方法；这些方法与关键字synchronized结合使用，可以实现 隐式锁的等待/通知机制。而显示锁Lock也实现了等待/通知机制；Condition接口也提供了类似Object的监视器方法，与Lock配合使用可以实现  显式锁]]></description><category></category></item><item><title><![CDATA[显式锁（三） -- 读写锁ReadWriteLock]]></title><link>https://blog.youkuaiyun.com/jinggod/article/details/78526066</link><guid>https://blog.youkuaiyun.com/jinggod/article/details/78526066</guid><author>jinggod</author><pubDate>Tue, 14 Nov 2017 11:23:19 +0800</pubDate><description><![CDATA[前言：  上一篇文章，已经很详细地介绍了 显式锁Lock 以及 其常用的实现方式- - ReetrantLock（重入锁），本文将介绍另一种显式锁 - - 读写锁ReadWriteLock。 
   前面介绍的隐式锁Synchronize、重入锁ReetrantLock都是互斥锁、独占锁，即同一个锁只能每时每刻至多由一个线程来获持有。互斥，是一种保守策略，虽然避免了“写/写”、“读/写”冲突，但也阻]]></description><category></category></item><item><title><![CDATA[显式锁（二）--- Lock接口与显示锁]]></title><link>https://blog.youkuaiyun.com/jinggod/article/details/78484937</link><guid>https://blog.youkuaiyun.com/jinggod/article/details/78484937</guid><author>jinggod</author><pubDate>Mon, 13 Nov 2017 17:53:59 +0800</pubDate><description><![CDATA[一、显式锁简介   显式锁，这个叫法是相对于隐式锁synchronized而言的，加锁和解锁都要用户显式地控制。显示锁Lock是在Java5中添加到jdk的，同synchronized一样，这也是一种协调共享对象访问的机制。但是它不是用来替代内置锁的，而是一种可选择的高级功能。 
1、Lock接口提供了synchronized关键字不具备的主要特性：
尝试非阻塞获取锁：当前线程尝试获取锁，如果这一时]]></description><category></category></item><item><title><![CDATA[显示锁（一）--- synchronized 的局限性 与 Lock 的优点]]></title><link>https://blog.youkuaiyun.com/jinggod/article/details/78483664</link><guid>https://blog.youkuaiyun.com/jinggod/article/details/78483664</guid><author>jinggod</author><pubDate>Wed, 08 Nov 2017 21:39:13 +0800</pubDate><description><![CDATA[转载自  Java 并发：Lock 框架详解 
摘要：　　我们已经知道，synchronized 是java的关键字，是Java的内置特性，在JVM层面实现了对临界资源的同步互斥访问，但 synchronized 粒度有些大，在处理实际问题时存在诸多局限性，比如响应中断等。Lock 提供了比 synchronized更广泛的锁操作，它能以更优雅的方式处理线程同步问题。本文以synchronized与]]></description><category></category></item><item><title><![CDATA[内置锁（三）---- synchronized的几个要注意的对象监视器]]></title><link>https://blog.youkuaiyun.com/jinggod/article/details/78474180</link><guid>https://blog.youkuaiyun.com/jinggod/article/details/78474180</guid><author>jinggod</author><pubDate>Wed, 08 Nov 2017 00:55:48 +0800</pubDate><description><![CDATA[前言   经过前面的两篇文章的介绍，可以清楚知道，synchronized可以用于修饰一个方法 或者 代码块，线程要访问这些临界区代码，则要先获取对应的 对象监视器 ，从而使多个线程互斥访问临界区。 
   然而，区别是不是同一个对象监视器，是根据对象监视器的内存地址是否一样。这就意味着，想要某些线程在同一个 对象监视器 上竞争临界区代码，那么就必须保证他们获取的对象监视器是同一个。 
   如果使]]></description><category></category></item><item><title><![CDATA[内置锁（二）--synchronized下的等待/通知机制]]></title><link>https://blog.youkuaiyun.com/jinggod/article/details/78421984</link><guid>https://blog.youkuaiyun.com/jinggod/article/details/78421984</guid><author>jinggod</author><pubDate>Thu, 02 Nov 2017 10:25:59 +0800</pubDate><description><![CDATA[一、等待/通知机制的简介线程之间的协作： 
  为了完成某个任务，线程之间需要进行协作，采取的方式：中断、互斥，以及互斥上面的线程的挂起、唤醒；如：生成者–消费者模式、或者某个动作完成，可以唤醒下一个线程、管道流已准备等等； 
等待/通知机制： 
   等待/通知机制 是线程之间的协作一种常用的方式之一，在显示锁Lock 和 内置锁synchronized都有对应的实现方式。 
等待/通知机制 经典]]></description><category></category></item><item><title><![CDATA[内置锁（一）--- synchronized 介绍与用法]]></title><link>https://blog.youkuaiyun.com/jinggod/article/details/78419929</link><guid>https://blog.youkuaiyun.com/jinggod/article/details/78419929</guid><author>jinggod</author><pubDate>Wed, 01 Nov 2017 23:03:24 +0800</pubDate><description><![CDATA[一、synchronized 的介绍  synchronized  是 Java语言的关键字，当它用来修饰一个方法或者一个代码块的时候，能够保证在同一时刻最多只有一个线程执行该段代码，而这段代码也被称为临界区。  synchronized  有多个叫法，而每个叫法都表明synchronized  的特性：1、内置锁（又叫 隐式锁）：synchronized  是内置于JDK中的，底层实现是nativ]]></description><category></category></item><item><title><![CDATA[并发基础（七） Thread 类的重要的方法--sleep、yeild、join]]></title><link>https://blog.youkuaiyun.com/jinggod/article/details/78311780</link><guid>https://blog.youkuaiyun.com/jinggod/article/details/78311780</guid><author>jinggod</author><pubDate>Sun, 22 Oct 2017 18:24:18 +0800</pubDate><description><![CDATA[1、Thread.sleep(long millis )

sleep( )是一个静态方法，让当前正在执行的线程休眠（暂停执行），而且在睡眠的过程是不释放资源的，保持着锁。 
在睡眠的过程，可以被中断，注意抛出InterruptedException异常； 
作用： 
1、暂停当前线程一段时间； 
2、让出CPU，特别是不想让高优先级的线程让出CPU给低优先级的线程



try {]]></description><category></category></item><item><title><![CDATA[并发基础（九） java线程的终止与中断]]></title><link>https://blog.youkuaiyun.com/jinggod/article/details/78311327</link><guid>https://blog.youkuaiyun.com/jinggod/article/details/78311327</guid><author>jinggod</author><pubDate>Sun, 22 Oct 2017 17:16:00 +0800</pubDate><description><![CDATA[1、简单了解一下：为何不赞成使用 Thread.stop、Thread.suspend 和 Thread.resume？

  suspend 、resume、stop方法分别完成了线程的暂停、恢复、终止的工作。不建议使用原因：是因为这三个方法带来的副作用，如suspend( )方法，调用后，线程就会一直占用资源睡眠，直到调用resume( )恢复后，才可以运行。这样很容易引发死锁。同样，stop]]></description><category></category></item><item><title><![CDATA[java线程阻塞中断和LockSupport的常见问题]]></title><link>https://blog.youkuaiyun.com/jinggod/article/details/78310591</link><guid>https://blog.youkuaiyun.com/jinggod/article/details/78310591</guid><author>jinggod</author><pubDate>Sun, 22 Oct 2017 15:53:28 +0800</pubDate><description><![CDATA[这里仅包含要讨论的几个问题的答案，具体讨论过程查看原文：java线程阻塞中断和LockSupport的常见问题 问题1： Thread.interrupt()方法和InterruptedException异常的关系？是由interrupt触发产生了InterruptedException异常？  
答： Thread.interrupt()只是在Object.wait() .Object.join(]]></description><category></category></item><item><title><![CDATA[并发基础（八） java线程的中断机制]]></title><link>https://blog.youkuaiyun.com/jinggod/article/details/78310185</link><guid>https://blog.youkuaiyun.com/jinggod/article/details/78310185</guid><author>jinggod</author><pubDate>Sun, 22 Oct 2017 15:09:21 +0800</pubDate><description><![CDATA[一、线程中断机制的原理

  java中断机制是一种协作机制，也就是说通过中断并不能直接终止另一个线程，而需要被中断的线程自己处理中断。 中断 可以认为是线程之间的一种通信的消息类型，当线程接到了一个中断消息时，怎么处理是线程的控制的，甚至可以不处理，其他线程无法干涉。 
在Core Java中有这样一句话：


  “没有任何语言方面的需求要求一个被中断的程序应该终止。中断一个线程只是为了引起该]]></description><category></category></item><item><title><![CDATA[实现多线程安全的3种方式]]></title><link>https://blog.youkuaiyun.com/jinggod/article/details/78275763</link><guid>https://blog.youkuaiyun.com/jinggod/article/details/78275763</guid><author>jinggod</author><pubDate>Wed, 18 Oct 2017 17:56:24 +0800</pubDate><description><![CDATA[1、先来了解一下：为什么多线程并发是不安全的？  在操作系统中，线程是不拥有资源的，进程是拥有资源的。而线程是由进程创建的，一个进程可以创建多个线程，这些线程共享着进程中的资源。所以，当线程一起并发运行时，同时对一个数据进行修改，就可能会造成数据的不一致性，看下面的例子：
  假设一个简单的int字段被定义和初始化： 
  int counter = 0; 
  该counter字段在两个线程A和B]]></description><category></category></item><item><title><![CDATA[java线程副本--ThreadLocal]]></title><link>https://blog.youkuaiyun.com/jinggod/article/details/78268020</link><guid>https://blog.youkuaiyun.com/jinggod/article/details/78268020</guid><author>jinggod</author><pubDate>Tue, 17 Oct 2017 22:55:09 +0800</pubDate><description><![CDATA[一、ThreadLocal 介绍  多线程并发之所以会不安全，就是因为线程不拥有资源，它们共享竞争着进程的资源，这样线程并发起来不安全，一般的解决方案便是用锁，保证每时每刻一个资源最多只能被一个线程拥有。而在java的多线程中，ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。 
  ThreadLocal解决多线程的并发问题的思路很简单：就是为每一个线程维护一个副本变量，从而让线]]></description><category></category></item><item><title><![CDATA[并发基础（六） 线程Thread类的start()和run()]]></title><link>https://blog.youkuaiyun.com/jinggod/article/details/78266697</link><guid>https://blog.youkuaiyun.com/jinggod/article/details/78266697</guid><author>jinggod</author><pubDate>Tue, 17 Oct 2017 21:33:51 +0800</pubDate><description><![CDATA[一、start( )方法

1、为什么需要start方法；它的作用是什么； 
   start方法的作用就是将线程由NEW状态，变为RUNABLE状态。当线程创建成功时，线程处于NEW（新建）状态，如果你不调用start( )方法，那么线程永远处于NEW状态。调用start( )后，才会变为RUNABLE状态，线程才可以运行。 
 2、调用start（）方法后，线程是不是马上执行？ 
 线程不是马]]></description><category></category></item></channel></rss>