wenwan 8 years ago
parent
commit
895688388c

+ 1 - 1
README.md

@@ -11,7 +11,7 @@
 *  	spring
 *	ibatis
 *	Quartz
-*	HttpClient
+*	[HttpClient](basic-knowledge/HttpClient.md)
 *	[常用的设计模式](basic-knowledge/常用的设计模式.md)
 
 

+ 11 - 0
basic-knowledge/HttpClient.md

@@ -0,0 +1,11 @@
+## HttpClient
+
+---
+
+
+
+
+
+参考资料:
+
+http://blog.csdn.net/wangpeng047/article/details/19624529

+ 14 - 0
basic-knowledge/concurrent-class.md

@@ -118,6 +118,8 @@ unit: 线程池维护线程所允许的空闲时间的单位
 workQueue: 线程池所使用的缓冲队列
 handler: 线程池对拒绝任务的处理策略
 
+![image](img/Snip20160701_52.png)
+
 * Executors
 	
 	线程执行器。
@@ -163,6 +165,18 @@ WriteLock  writeLock=lock.writeLock();
 ReadLock   readLock=lock.readLock();
 《分布式java应用》P165
 
+* 如何避免死锁
+
+	1.制定锁的顺序,来避免死锁(先A后B,避免A->B和B->A同时存在);
+	
+	2.尝试使用定时锁(lock.tryLock(timeout))
+	
+	3.在持有锁的方法中进行其他方法的调用,尽量使用开放调用(当调用方法不需要持有锁时,叫做开放调用)
+	
+	4.减少锁的持有时间、减小锁代码块的粒度。
+
+
+
 
 #### 汇总
 

BIN
basic-knowledge/img/.DS_Store


BIN
basic-knowledge/img/Snip20160630_46.png


BIN
basic-knowledge/img/Snip20160701_52.png


+ 1 - 1
basic-knowledge/java修饰词.md

@@ -32,7 +32,7 @@ volatile是java最轻量级的同步机制。
 public synchronized void method(int i);  
 ```
 
-每个类实例对应一把锁,类实例中所有的synchronized方法共用这一把锁,锁的范围有点大。
+每个类实例对应一把锁,类的两个实例没有这个限制。类实例中所有的synchronized方法共用这一把锁,锁的范围有点大。
 
 
 * 同步块

+ 46 - 1
basic-knowledge/java的线程状态.md

@@ -9,4 +9,49 @@
 3. waiting,处于此状态的线程不会被分配时间片,必须要等待被其他线程显式的唤醒,notify或notify all
 4. timed waiting ,处于此状态的线程不会被分配时间片,不过无须等待其它线程显式的唤醒,在一定时间后会由系统自动唤醒
 5. blocked,线程被阻塞了,必须要等待获取锁
-6. terminated,线程已执行结束。
+6. terminated,线程已执行结束,如一个线程的run()函数执行完毕后线程就进入死亡状态
+
+
+**影响的命令:**
+
+*	run、start
+
+	需要并行处理的代码放在run()方法中,start()方法启动线程将自动调用 run()方法,这是由Java的内存机制规定的。并且run()方法必须是public访问权限,返回值类型为void。
+	
+* 	wait
+
+	当前线程暂停执行并释放对象锁标志,让其他线程可以进入Synchronized数据块,当前线程被放入对象等待池中
+	
+*	notify
+
+	唤醒一个线程
+	
+* 	notifyAll
+
+	唤醒所有线程
+	
+* 	sleep
+
+	休眠一段时间后,会自动唤醒。但它并不释放对象锁。也就是如果有Synchronized同步块,其他线程仍然不能访问共享数据。注意该方法要捕获异常
+	
+* 	join
+
+	当前线程停下来等待,直至另一个调用join方法的线程终止,线程在被激活后不一定马上就运行,而是进入到可运行线程的队列中
+	
+*	yield
+
+	停止当前线程,让同等优先权的线程运行。如果没有同等优先权的线程,那么yield()方法将不会起作用
+
+*	daemon
+
+
+
+
+操会作系统维护一个ready queue(就绪线程队列),某一时刻cpu只为ready queue中位于队列头部的线程服务。 
+
+
+![image](img/Snip20160630_46.png)
+
+**参考资料:**
+
+http://www.jianshu.com/p/c9f847101fae

+ 2 - 2
open-source-framework/Goole-Guava.md

@@ -98,7 +98,7 @@ Splitter.on(',')
 **拆分器工厂**
 
 |方法|	描述|	范例|
-|--|--|--|
+|------------- |------------- |------------- |
 |Splitter.on(char)|	按单个字符拆分|	Splitter.on(‘;’)|
 |Splitter.on(CharMatcher)	|按字符匹配器拆分	|Splitter.on(CharMatcher.BREAKING_WHITESPACE)|
 |Splitter.on(String)|	按字符串拆分	|Splitter.on(“,   “)|
@@ -108,7 +108,7 @@ Splitter.on(',')
 **拆分器修饰符**
 
 |方法|	描述|
-|--|--|
+|-------------|-------------|
 |omitEmptyStrings()	|从结果中自动忽略空字符串|
 |trimResults()	|移除结果字符串的前导空白和尾部空白|
 |trimResults(CharMatcher)|	给定匹配器,移除结果字符串的前导匹配字符和尾部匹配字符|