![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并发编程
文章平均质量分 82
relax_wu
你有一个苹果,我有一个苹果,我们交换一下,一人还是一个苹果;你有一个思想,我有一个思想,我们交换一下,一人就有两个思想。技术的成长,离不开思维的碰撞
展开
-
java传统线程介绍
线程使用有两种:1.继承Thread类2.实现Runnable接口那么如果这两种情况都存在时,会先执行哪个呢?让我们来看看下面的例子:package com.norelax.www;public class TraditionalThread {public static void main(String[] args) {new原创 2016-05-14 15:11:13 · 356 阅读 · 0 评论 -
java线程通信
1.传统的线程通信,直接上代码:package com.norelax.www;//传统的线程通信,主线程执行100次,子线程执行50次,主线程和子线程交替执行public class TraditionalThreadCommunication { public static void main(String[] args) { final Business business=new原创 2016-05-14 16:01:46 · 340 阅读 · 0 评论 -
传统定时器技术
在java.util.Timer包中,现在有一个需求,要求2秒钟执行一次PING操作,4秒钟执行一次PONG操作,直接上代码:package com.norelax.www;import java.util.Date;import java.util.Timer;import java.util.TimerTask;public class TraditionalTimer原创 2016-05-15 15:39:42 · 310 阅读 · 0 评论 -
java线程范围内的数据共享
1.不使用ThreadLocal,自己定义一个map,用来存放当前线程的数据package com.norelax.www;import java.util.Map;import java.util.Random;import java.util.concurrent.ConcurrentHashMap;public class ThreadScopeDataShare { //原创 2016-05-15 16:17:41 · 413 阅读 · 0 评论 -
生产者和消费者的两种方式
在前面我们将了很多关于同步的问题,然而在现实中,需要线程之间的协作。比如说最经典的生产者-消费者模型:当队列满时,生产者需要等待队列有空间才能继续往里面放入商品,而在等待的期间内,生产者必须释放对临界资源(即队列)的占用权。因为生产者如果不释放对临界资源的占用权,那么消费者就无法消费队列中的商品,就不会让队列有空间,那么生产者就会一直无限等待下去。因此,一般情况下,当队列满时,会让生产者交出对临界原创 2016-05-29 20:27:06 · 549 阅读 · 0 评论 -
获取单例对象 Double Checked Locking Pattern的危险性
早期内置锁synchronized的性能比较低,所以在实现懒汉式单例模式时采取Double Checked Locking Pattern模式,它通过尽量少执行内置锁的锁定以提高性能,如下面的代码所示:public class MySystem { private static MySystem instance = null; private Date date = new Date();原创 2017-03-01 15:46:05 · 394 阅读 · 0 评论