2018年6月14日

多线程中Object的wait(),notify()和Condition的wait()和singal()对锁的关联

摘要: 通常将共享资源的操作放置在Sysnchronized定义的区域内,这样当其他线程也获取到这个锁时,必须的等待锁被释放时才能进入该区域。Object为任意一个对象,每个对象都存在一个标志位,并具有两个值,分别为0和1。一个线程运行到同步块时,首先检查该对象的标志位,如果为0状态,表明此同步块中存在其他 阅读全文
posted @ 2018-06-14 15:36 Windy心梦无痕 阅读(163) 评论(0) 推荐(0) 编辑
2018年6月13日

使用多线程循环交替打印字符

摘要: 使用Condition + Lock 进行实现 private static int count_print = 1; (1)此处只能用static,来实现每打印一个字符,下一个字符长度加一,static是使该变量只有一个副本,任何改变都是对这个副本的内容做操作(2)若是想实现每打印一组,下一组字符 阅读全文
posted @ 2018-06-13 10:45 Windy心梦无痕 阅读(1495) 评论(0) 推荐(0) 编辑
2018年6月12日

Condition的await-signal流程详解

摘要: http://blog.csdn.net/luonanqin 上一篇讲了ReentrantLock的lock-unlock流程,今天这篇讲讲Condition的await-signal流程。 Condition类图: Condition接口包含了多种await方式和两个通知方法 ConditionO 阅读全文
posted @ 2018-06-12 21:41 Windy心梦无痕 阅读(689) 评论(0) 推荐(0) 编辑

Java多线程——Condition条件

摘要: 简介 Condition中的await()方法相当于Object的wait()方法,Condition中的signal()方法相当于Object的notify()方法,Condition中的signalAll()相当于Object的notifyAll()方法。 不同的是,Object中的wait() 阅读全文
posted @ 2018-06-12 21:05 Windy心梦无痕 阅读(2341) 评论(0) 推荐(0) 编辑

轻松学习java可重入锁(ReentrantLock)的实现原理

摘要: 转载自https://blog.csdn.net/yanyan19880509/article/details/52345422,(做了一些补充) 前言 相信学过java的人都知道 synchronized 这个关键词,也知道它用于控制多线程对并发资源的安全访问,兴许,你还用过Lock相关的功能,但 阅读全文
posted @ 2018-06-12 20:55 Windy心梦无痕 阅读(388) 评论(0) 推荐(0) 编辑

java多线程编程之连续打印abc的几种解法

摘要: 一道编程题如下: 实例化三个线程,一个线程打印a,一个线程打印b,一个线程打印c,三个线程同时执行,要求打印出10个连着的abc。 题目分析: 通过题意我们可以得出,本题需要我们使用三个线程,三个线程分别会打印6次字符,关键是如何保证顺序一定是abc...呢。所以此题需要同步机制来解决问题! 令打印 阅读全文
posted @ 2018-06-12 11:06 Windy心梦无痕 阅读(360) 评论(0) 推荐(0) 编辑
2018年6月11日

JAVA的原子性和可见性,线程同步的理解

摘要: 1、原子性 (1)原子是构成物质的基本单位(当然电子等暂且不论),所以原子的意思代表着——“不可分”; (2)原子性是拒绝多线程操作的,不论是多核还是单核,具有原子性的量,同一时刻只能有一个线程来对它进行操作。简而言之,在整个操作过程中不会被线程调度器中断的操作,都可认为是原子性。例如 a=1是原子 阅读全文
posted @ 2018-06-11 20:31 Windy心梦无痕 阅读(1306) 评论(0) 推荐(1) 编辑

JAVA 两个对象不同为什么他们的hashcode有可能相同

摘要: hashCode是所有java对象的固有方法,如果不重载的话,返回的实际上是该对象在jvm的堆上的内存地址,而不同对象的内存地址肯定不同,所以这个hashCode也就肯定不同了。如果重载了的话,由于采用的算法的问题,有可能导致两个不同对象的hashCode相同。 而且,还需要注意一下两点: 1)ha 阅读全文
posted @ 2018-06-11 19:18 Windy心梦无痕 阅读(8652) 评论(2) 推荐(0) 编辑
2018年6月9日

Java序列化的作用和反序列化

摘要: 1、序列化是干什么的? 简单说就是为了保存在内存中的各种对象的状态(也就是实例变量,不是方法),并且可以把保存的对象状态再读出来。虽然你可以用你自己的各种各样的方法来保存object states,但是Java给你提供一种应该比你自己好的保存对象状态的机制,那就是序列化。 2、什么情况下需要序列化 阅读全文
posted @ 2018-06-09 17:19 Windy心梦无痕 阅读(161) 评论(0) 推荐(0) 编辑

Java语言中的值传递与引用传递

摘要: Java应用程序中永远不会传递对象,而只会传递对象应用,因此,按对象引用传递。 (1) Int作为参数传递时,对形参值得修改不会影响到实参; (2) StringBuffer作为参数时,对形参对象内容的修改影响到了实参。 (3) 值传递只是传递了一个值的副本,对形参值得改变不会影响实参的值。 (4) 阅读全文
posted @ 2018-06-09 15:40 Windy心梦无痕 阅读(222) 评论(0) 推荐(0) 编辑