- 浏览: 43817 次
- 性别:
- 来自: 上海
-
最新评论
文章列表
前面我们介绍了Java当中多个线程抢占一个共享资源的问题。但不论是同步还是重入锁,都不能实实在在的解决资源紧缺的情况,这些方案只是靠制定规则来约束线程的行为,让它们不再拼命的争抢,而不是真正从实质上解决他们 ...
Java监视器支持两种线程:互斥和协作
。
前面我们介绍了采用对象锁和重入锁来实现的互斥。这一篇中,我们来看一看线程的协作。
举个例子:有一家汉堡店举办吃汉堡比赛,决赛时有3个顾客来吃,3个厨师来做,一个服务员负责协调汉堡的数量。为了避免浪费,制作好的汉堡被放进一个能装
有10个汉堡的长条状容器中,按照先进先出的原则取汉堡。如果容器被装满,则厨师停止做汉堡,如果顾客发现容器内的汉堡吃完了,就可以拍响容器上的闹铃,
提醒厨师再做几个汉堡出来。此时服务员过来安抚顾客,让他等待。而一旦厨师的汉堡做出来,就会让服务员通知顾客,汉堡做好了,让顾客继续过来取汉堡。
这里,顾客其实 ...
在上一节中,
我们已经了解了Java多线程编程中常用的关键字synchronized,以及与之相关的对象锁机制。这一节中,让
我们一起来认识JDK 5中新引入的并发框架中的锁机制
。
我想很多购买了《Java程序员面试宝典》之类图书的朋友一定对下面
这个面试题感到非常熟悉:
问:请对比synchronized与java.util.concurrent.locks.Lock
的异同。
答案:主要相同点:Lock能完成synchronized所实现的所有功能
主要不同点:Lock有比synchronized更精确的线程语义和更好的性能。synchronized会自动释 ...
在上一篇中,我们讲到了多线程是如何处理共享资源的,以及保证他们对资源进行互斥访问所依赖的重要机制:对象锁
。
本篇中,我们来看一看传统的同步实现方式以及这背后的原理。
很多人都知道,在Java多线程编程中,有 ...
众所周知,在Java多线程编程中,一个非常重要的方面就是线程的同步问题。
关于线程的同步,一般有以下解决方法:
1. 在需要同步的方法
的方法签名中加入synchronized关键字
。
2. 使用synchronized块
对需要进行同步的代码段进行同步。
3. 使用JDK 5中提供的java.util.concurrent.lock
包中的Lock对象。
另外,为了解决多个线程对同一变量进行访问时可能发生的安全性问题,我们不仅可以采用同步机制,更可以通过JDK 1.2中加入的ThreadLocal
来保证更好的并发性。
本篇中,将详细的讨论Java多线程同步机制,并 ...
/**
* 参考java中HashMap
* 基本上实现Map接口
* @author chitianxiang $Date: July 5, 2012 - Thursday - 11: 28 AM
*/
function HashMap(){
this._table = {};
this._size = 0;
if (typeof HashMap._initialized == "undefined") {
//返回 key-value 映射的数量
...
select * from table where binary
name like '%name%'
select * from table where name like '%name%' COLLATE utf8_bin
location.hash = id;
下拉菜单通过$("#" + id).slideup("normal");
在页面上虽然闭合了但还是会占用空间,所以经常定位不准
。
原因:
经过研究是因为隐藏的height属性影响的。
解决方法:
var height = $("#" + id).css("height");
$("#" + id).css("height", 0); //(1)
location.hash = id;
$( ...
注:[Tab]代表按键 在文本模式(终端)下
man全称manual手册指南的意思
1.可以查看多少条指令
[chtx8798@localhost ~]$ [Tab][Tab]
2.查看指令的详细信息man page
[chtx8798@localhost ~]$ man 指令3.man page中第一行指令后数字含义
数字
含义
1
用户在shell环境中可以操作的指令或可执行文件
2
系统核心可呼叫的函数与工具等
3
...
1.关联类
ThreadLocal: 线程局部变量
Thread:线程对象
2. Thread与ThreadLocal如何关联?
ThreadLocal类:
/**
* Variant of set() to establish initialValue. Used instead
* of set() in case user has overridden the set() method.
*
* @return the initial value
*/ ...
方法:sun.reflect.Reflection.getCallerClass(int i)
其中i为0-----i++
实例:类A,B,C,D,Reflection
关系:A-->B-->C-->D-->Reflection (-->表调用)
1. i == 0
class sun.reflect.Reflection
2. i == 1
class D
3. i == 2
class C
4. i == 3
class B
5. i == 4
...
1. 下载poi库
http://poi.apache.org/download.html
2.将poi核心文件取出放入myeclipse的lib中
3.测试代码
package test5;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream ...
/**
* 判断是否是手机
* @param tel 电话号码
* @author chitianxiang $Feb 4th, 2012
*/
static private boolean isMobile(String tel) {
boolean matchFlag = false;
if (null != tel && !"".equals(tel)) {
//手机号码,以1开始,13,15,18,19,为合法,后跟9位数字
String regEx="[1]{1}[3,5,8,6 ...
/**
* 将不完整的网址转换成完整网址
* <pre>
* example:
* sourceUrl = "http://www.wed114.cn/jiehun/shishanghunli/hunlicehua/";
* toConvertUrl = "/jiehun/shishanghunli/hunlicehua/201106/1496.html";
* latestUrl = "http://www.wed114.cn/jiehun/shishanghunli/hunlicehua/ ...
1.下载Jsoup核心库
地址: http://jsoup.org/download