<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[ThreadPool_only的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/ThreadPool_only</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ThreadPool_only]]></copyright><item><title><![CDATA[java多线程学习2：线程的生命周期监听-Observer模式]]></title><link>https://blog.youkuaiyun.com/ThreadPool_only/article/details/80098989</link><guid>https://blog.youkuaiyun.com/ThreadPool_only/article/details/80098989</guid><author>ThreadPool_only</author><pubDate>Thu, 26 Apr 2018 20:09:30 +0800</pubDate><description><![CDATA[1先说说这个Observer模式 
常说的观察者模式或listener模式。 
常用的就是MQ中的消息接收监听、spring/spring mvc中的容器刷新监听等待。

用一句话来说，注册自己感兴趣的事件源。下面画个uml图

 
简陋一点 但有内涵。

观察者：关注自己的业务，等待事件出发

事件：触发后，主动调用观察者

在工作中.observer模式能解决很多的问题，比如说状态变化的监控、...]]></description><category></category></item><item><title><![CDATA[java多线程设计模式1:读写锁模式]]></title><link>https://blog.youkuaiyun.com/ThreadPool_only/article/details/80044520</link><guid>https://blog.youkuaiyun.com/ThreadPool_only/article/details/80044520</guid><author>ThreadPool_only</author><pubDate>Sun, 22 Apr 2018 23:05:34 +0800</pubDate><description><![CDATA[关于读写锁模式需要明白几个要素 
1、写：当前没有写操作，以及没有读操作 
2、读：当前没有写操作

package com.puqiuyu.thread.blog.pattern;

/**
 * 
 * 
 * @author sunday
 *
 */
public class WriteAndReadLock {
    // 正在写的线程
    private int writings...]]></description><category></category></item><item><title><![CDATA[java多线程设计模式大纲]]></title><link>https://blog.youkuaiyun.com/ThreadPool_only/article/details/80043787</link><guid>https://blog.youkuaiyun.com/ThreadPool_only/article/details/80043787</guid><author>ThreadPool_only</author><pubDate>Sun, 22 Apr 2018 22:01:41 +0800</pubDate><description><![CDATA[1、读写锁模式 
2、门模式 
3、Observer模式 
4、挂起模式 
5、balking模式 
6、生产者消费者模式 
7、Future模式 
8、two phase模式 
9、work thread 模式 
9、activeobject模式...]]></description><category></category></item><item><title><![CDATA[java多线程学习6:自己实现一个线程池]]></title><link>https://blog.youkuaiyun.com/ThreadPool_only/article/details/80043509</link><guid>https://blog.youkuaiyun.com/ThreadPool_only/article/details/80043509</guid><author>ThreadPool_only</author><pubDate>Sun, 22 Apr 2018 21:42:08 +0800</pubDate><description><![CDATA[线程池需要哪些元素： 
1、任务队列，做任务的异步提交 
2、核心线程数、最大线程数 
3、拒绝策略 
4、线程工厂

基本上的思路就是，任务队列提交任务，线程通过任务队列获取任务。 
任务队列堆积新增工作线程，定期检测活跃线程。  任务满了，提供拒绝策略

下面是一个简单的实现：

package com.puqiuyu.thread.blog;
/**
 * 实现一个线程池要哪些东西
 * 1...]]></description><category></category></item><item><title><![CDATA[JAVA多线程学习5:自己实现一个boolean锁]]></title><link>https://blog.youkuaiyun.com/ThreadPool_only/article/details/80040836</link><guid>https://blog.youkuaiyun.com/ThreadPool_only/article/details/80040836</guid><author>ThreadPool_only</author><pubDate>Sun, 22 Apr 2018 17:33:02 +0800</pubDate><description><![CDATA[一个简单的锁 
提供一个禁戒值，表示当前锁占用情况。

定义一个lock接口

package com.puqiuyu.thread.blog;
/**
 * 简单实现下就行
 * @author sunday
 *
 */
public interface Lock {
    void lock() throws InterruptedException;

    void unlock()...]]></description><category></category></item><item><title><![CDATA[java多线程学习4：wait、notify、notifyall。生产者消费者实例]]></title><link>https://blog.youkuaiyun.com/ThreadPool_only/article/details/80040292</link><guid>https://blog.youkuaiyun.com/ThreadPool_only/article/details/80040292</guid><author>ThreadPool_only</author><pubDate>Sun, 22 Apr 2018 16:49:50 +0800</pubDate><description><![CDATA[大纲：
1、wait
2、notify
3、notifyall
4、wait和sleep的区别
5、单一生产者消费者代码
6、多生产者消费者代码

wait 
官方文档太多。总结为下面几点 
1、调用wait方法必须要有monitor。这个monitor就是synchorized中的那个。 
2、调用wait后，当前线程会进去wait set(线程休息室)并释放当前锁占用。直到thismonito...]]></description><category></category></item><item><title><![CDATA[java多线程学习3:如何结束一个线程]]></title><link>https://blog.youkuaiyun.com/ThreadPool_only/article/details/79840156</link><guid>https://blog.youkuaiyun.com/ThreadPool_only/article/details/79840156</guid><author>ThreadPool_only</author><pubDate>Sat, 07 Apr 2018 11:50:12 +0800</pubDate><description><![CDATA[现在的jdk已经弃用了，stop方法。那么我们怎么结束一个线程呢。

先写一个实现：



Thread t = new Thread(()-&amp;gt;{
            while(Thread.interrupted()) {
                return;
            }
        });
        t.start();
        t.in...]]></description><category></category></item><item><title><![CDATA[java多线程学习2:sleep、join、interrupt学习]]></title><link>https://blog.youkuaiyun.com/ThreadPool_only/article/details/79838185</link><guid>https://blog.youkuaiyun.com/ThreadPool_only/article/details/79838185</guid><author>ThreadPool_only</author><pubDate>Fri, 06 Apr 2018 23:50:57 +0800</pubDate><description><![CDATA[大纲在前：
1、deamon的使用补充。
2、sleep
3、interrupt、isInterrupt、interrupted.
4、join

deamon的使用补充 
学习1中已经说了，守护线程会在所有用户线程结束后死亡同时jvm退出。 
如何利用deamon的这个特点呢。 
维护一个server的心跳，当心跳失效，那么业务线程就没必要存在了。此时可以将业务线程设为deamon。



sl...]]></description><category></category></item><item><title><![CDATA[java多线程学习1:线程基本api介绍]]></title><link>https://blog.youkuaiyun.com/ThreadPool_only/article/details/79832863</link><guid>https://blog.youkuaiyun.com/ThreadPool_only/article/details/79832863</guid><author>ThreadPool_only</author><pubDate>Fri, 06 Apr 2018 13:42:03 +0800</pubDate><description><![CDATA[第一篇博文，说说为什么要写。 
今天面了一个人，感觉他的知识不成体系，全靠零零碎碎的杂糅在一起。 
所以，我要总结一下所学，构建知识网络。

1、生命周期 
    新建：new thread(); 
    就绪：调用thread的start()方法，此为可运行状态。 
    running:当前线程抢到cpu执行权，正在运行。 
    blocked：堵塞状态，放弃当前cpu执行权。 
 ...]]></description><category></category></item></channel></rss>