并发
文章平均质量分 77
Megustas_JJC
change the world by program
展开
-
多线程学习笔记(四)之线程间通信---等待唤醒机制
线程间通信的一个demo线程间的相互作用:线程之间需要一些协调通信,来共同完成一件任务。线程间通信,即多个线程在处理同一资源,但是任务却不同。例如我们现在有两个任务,分别是Input信息和Output信息,用之前(一)到(三)提到的synchronized+锁的方法解决的代码如下(加锁(同步)的问题需要考虑的本质因素,一个锁下是否有多个线程,即多个线程需要持有同一个锁对象),当执行完同步代码块时会释原创 2017-05-01 21:36:02 · 704 阅读 · 0 评论 -
ThreadLocal类与SimpleDateFormat类
ThreadLocal类维持线程封闭性,可以使线程中的某个值与保存值得对象关联起来。为每个使用该变量的线程都存有一份独立的脚本,因此get总是返回当前执行线程在调用set时设置的最新值。ThreadLocal对象通常用于防止对可变的单实例变量(Singleton)或全局变量进行共享(在多线程应用程序在没有协同的情况下使用全局变量时,就不是线程安全的)深入理解Java:SimpleDateFor...原创 2018-11-12 12:41:23 · 665 阅读 · 0 评论 -
Java并发编程实战:闭锁CountDownLatch,栅栏CyclicBarrier与信号量Semaphore
整体上对三个概念进行一个说明:CountDownLatch和CyclicBarrier都能够实现线程之间的等待,只不过它们侧重点不同:CountDownLatch是闭锁,相当于一扇门:在闭锁达到结束状态之前,这扇门一直是关闭的,并且没有任何线程能够通过,当到达结束状态时,这扇门会打开,允许所有线程通过。当闭锁到达结束状态之后,将不会再改变状态,将永远保持打开状态。栅栏能够阻塞一组线程,直到...原创 2018-11-13 12:24:32 · 866 阅读 · 0 评论 -
对于并发线程数的设置的一些理解
一些常见问题(1)线程数是不是越大越好? 肯定不是的,首先服务器的cpu核数有限,同时并发的线程数是有限的,1核cpu设置10000个工作线程是没有意义的;线程的切换是有开销的,如果线程切换过于频繁,反而使性能降低。 (2)调用sleep()函数的时候,线程是否一直占用cpu? 不占用,等待时会把cpu让出来,给其他需要cpu资源的线程使用,不止sleep()函数,在进行一些阻塞调用,例如网络原创 2017-08-29 20:14:23 · 7460 阅读 · 1 评论 -
多线程学习笔记(二)之线程安全问题
线程安全问题的现象首先让我们考虑一个问题:class Demo implements Runnable{ private int num = 100; //实现Runnable接口,覆盖run方法 public void run(){ show(); } public void show(){ while (true){原创 2017-04-21 21:32:21 · 1048 阅读 · 0 评论 -
多线程学习笔记(七)之wait与sleep的区别、线程停止及守护线程等
wait()方法与sleep()方法的区别wait()方法与sleep()方法的区别:wait可以指定时间也可以不指定时间;sleep必须指定时间在同步中时,对cpu的执行权和锁的处理不同: wait:释放cpu执行权,释放锁 sleep:释放cpu执行权,不释放锁停止线程定义循环结束标记因为线程运行代码一般都是循环,只要控制了循环即可。例如通过flag的方式:class StopTh原创 2017-05-06 22:05:55 · 2892 阅读 · 0 评论 -
多线程学习笔记(六)之锁对象Lock
接口Lock首先我们回顾下同步代码块,例如:Object obj = new Object();void show(){ synchronized(obj){ code... }}同步代码块对锁的操作是隐式的,执行完同步代码块中的内容,自动释放锁。而Lock将锁封装成为了对象,即把对锁操作的隐式操作换成了显示操作。可以将如上代码改写:Lock lock = new原创 2017-05-05 15:23:58 · 1095 阅读 · 0 评论 -
多线程学习笔记(三)之单例模式中的线程问题
在某些情况下,每个类只需要一个实例,单例模式就是保证在整个应用程序的生命周期中,任何一个时刻,单例类的实例都只存在一个(当然也可以不存在),核心点:将采用单例模式的类的构造方法私有化(private修饰)在其内部产生该类的实例化对象,并将其封装成private static 类型定义一个public静态方法返回该实例饿汉式优点是:写起来比较简单,而且不存在多线程同步问题,避免了synchro原创 2017-04-22 16:34:18 · 649 阅读 · 0 评论 -
·多线程学习笔记(五)之多生产者多消费者中的线程问题
多生产多消费的问题首先我们先看一个例子:class ResourceDemo{ private String name; private int count; private boolean flag = false; //生产者 public synchronized void set(String name){ if (flag){原创 2017-05-03 10:11:26 · 733 阅读 · 1 评论 -
多线程学习笔记(一)之线程创建与线程状态
基本概念进程:正在进行中的程序 线程:就是进程中一个负责程序执行的控制单元(执行路径) 一个进程中可以有多个执行路径,称之为多线程 一个进程至少要有一个线程 开启多个线程是为了同时运行多部分代码 每一个线程都有自己运行的内容,这个内容可以称为线程要执行的任务。 (之前也概述过多线程相关内容,见http://blog.csdn.net/megustas_jjc/article/detail原创 2017-04-20 13:55:11 · 646 阅读 · 0 评论 -
Java中的CopyOnWriteArrayList
1、Copy-On-Write 是什么?首先我讲一下什么是Copy-On-Write,顾名思义,在计算机中就是当你想要对一块内存进行修改时,我们不在原有内存块中进行写操作,而是将内存拷贝一份,在新的内存中进行写操作,写完之后呢,就将指向原来内存指针指向新的内存,原来的内存就可以被回收掉嘛!网上兄弟们说了,这是一种用于程序设计中的优化策略,是一种延时懒惰策略。都说优化优化,那么到底优化了哪些问题...转载 2018-11-12 16:07:49 · 404 阅读 · 0 评论