【并发编程系列】
曲健磊的个人博客
just do it!
展开
-
多线程间的通信
多线程间的通信:多个线程都在处理同一个资源,但是处理的任务不一样等待唤醒机制。生产者,消费者:/*需求:生产者每生产一个产品,消费者就消费一个。通过同步,解决了没生产就消费的问题。但是出现了连续的生产没有消费的情况,和需求生产一个,消费一个的情况不符使用了等待唤醒机制.wait():该方法可以让线程处于冻结状态,并且将线程临时存储到线程池中...原创 2016-08-18 21:58:24 · 378 阅读 · 0 评论 -
同步嵌套,死锁实例
public class DeadLockDemo { public static void main(String[] args) { //创建线程任务 Task t1 = new Task(true); Task t2 = new Task(false); new Thread(t1).start(); new Thread(t2).start(); }}cl...原创 2016-08-18 21:56:10 · 482 阅读 · 0 评论 -
同步方法
同步方法,其实就是在方法上加上了同步关键字(synchronized)进行修饰。同步的体现形式有两种:1.同步代码块2.同步方法。同步方法使用的锁是什么呢?方法需要被对象调用,哪个对象不确定,但是都用this来表示。同步方法使用的锁就是this如果同步方法被static修饰呢?static方法随着类的加载,这时不一定有该类的对象,但是一定有一个该类的字节码文件对象。这个对象简单...原创 2016-08-18 21:50:02 · 462 阅读 · 0 评论 -
多线程的安全问题
多线程的安全问题:产生的原因:1.线程任务中有处理到共享数据。2.线程任务中有多条对共享数据的操作。一个线程在操作共享数据的过程中,其他线程参与了运算,造成了数据的错误。解决的思想:只要保证多条操作共享数据的代码在某一段时间段,被一条线程执行,在执行期间不允许其他线程参与运算。咋保证呢?用到了同步代码块。synchronized(对象){需要被同步的代码。}同步在目前情况下...原创 2016-08-18 21:44:26 · 299 阅读 · 0 评论 -
多线程
进程:就是应用程序在内存中分配的空间。(正在运行的程序)线程:是进程中负责程序执行的执行单元,也成为执行路径。一个进程中至少有一个线程在负责该进程的运行。如果一个进程中出现了多个线程,就称该程序为多线程程序。举例:运动场--鸟巢,水立方。多线程技术:解决多部分代码同时执行的需求。可以合理的使用cpu资源。增加用户体验感。多线程的运行根据CPU的切换完成的,怎么切换CPU说的算,所以多线...原创 2016-08-17 17:12:20 · 299 阅读 · 0 评论 -
使用Thread Dump诊断死锁和性能瓶颈问题
场景:Java程序在运行的过程中出现了死锁或者运行的很慢,查看日志也没发现什么Exception,该如何解决呢?一段死锁程序:public class DeadLock { public static Object lockA = new Object(); public static Object lockB = new Object(); public ...原创 2018-11-10 12:14:28 · 888 阅读 · 0 评论