Tuesday, June 09, 2009

Swing中JTextField的死锁问题

Swing中的JTextField如果使用不当,会造成死锁。这与JTextField中的两个锁有关系,一个是其继承来的Container.getTreeLock()方法返回的组件锁,一个是JTextField自己的readLock() writeLock()锁。

1)getTreeLock()会在每次计算组件大小(getPreferredSize方法)的时候调用。
2)设置JTextField的文字时则会在得到了writeLock后,再去尝试得到getTreeLock,已更新组件属性(本例中就是调用invalidate()方法)。
3)而一旦write锁不释放,所有尝试得到read锁的线程都将处于wait状态。
这三个条件就可以在多线程环境下构造出一个死锁。看下面的例程:

测试代码如下:
public class TryLock
{

/**
* @param args
*/
public static void main(String[] args)
{
final JFrame frame = new JFrame();
frame.setSize(300, 300);
frame.setVisible(true);
final JTextField txt = new JTextField();
frame.getContentPane().setLayout(new FlowLayout());
frame.getContentPane().add(txt);
Thread th = new Thread(new Runnable()
{
public void run()
{
while (true)
{
try
{
Thread.currentThread().sleep(1);
} catch (InterruptedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
frame.pack();//1) pack时会调用JTextField的getPreferredSize方法,#必须得到read锁。
}
}
});
th.setName("循环pack");
th.start();

while (true)
{
try
{
Thread.currentThread().sleep(1);
} catch (InterruptedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
SwingUtilities.invokeLater(new Runnable()
{

public void run()
{
txt.setText("asdfasdfasdf");// 2)必须得到write锁,并且在更新完毕后,释放write锁之前要getTreeLock()。
}

});

}
}
}

上面的例程一旦运行几乎马上就会陷入死锁状态。Swing线程处于等待状态,GUI不再repaint。

用了很久的Swing,总算知道啥叫Swing不是线程安全的了。状态不一致还好说,锁住事情可就大喽。

Sunday, June 07, 2009

Mark

我对于不够有意思的事情提不起长久的足够的精神头

Saturday, May 09, 2009

T200B的摆放和音量调节

T200B的声音调节可以使用遥控器和音响后面的旋钮。但是印象后面的旋钮只记增减量,与位置无关,所以如果遥控器可以使用的话,这个旋钮基本没有作用。

T200B的遥控器有六个按钮,L+和L-
可以单独调节左音箱音量,R+和R-可以单独调节右音箱音量,Vol+和Vol-可以同时调节两个音箱的音量。

首先可用使用L+、L-、R+和R-来确定哪个是左音箱,哪个是右边的音箱。这样就可以正确摆放了。下面为了把RCA线连到接正确的声道,可以使用一些左右声道测试的音频。下面这个视频是专门进行左右声道测试的http://www.56.com/u30/v_MTU2ODE4ODM.html

音箱摆放对,音频线插对之后,就是最麻烦的音量调节了。音箱打开之后,不要使用音箱后面的音量调节按钮,而是要用遥控器对音量调节。
L+、L-、R+和R-四个按钮最好不要单独使用。因为它只会调节单个音箱的音量。
当使用L+和L-后,遥控器的显示器上会显示左音箱的音量。如果使用R+或R-后,遥控器上就只会显示右音箱的音量。按下Send键后,就可以将音量发送到音箱。

Vol+和Vol-是最疑惑的按钮,它会同时调节两个音箱的音量,但是不会同步两个音箱的音量。举例说,如果左边音量时30,右边音量是33,按下Vol+五下后,左边音量是35,右边是38。但是最让人迷糊的事情是,如果使用Vol+或Vol-后,遥控器的显示器上会显示Master,而不是显示左右音箱的音量。这就隐瞒了“左右音箱音量不同”这个事实。

所以最好的办法是使用遥控器上的Vol+、Vol-和Send三个键,别的都别用。使用的时候首先使用Vol+或Vol-调节好一个音箱的音量,然后使用Send键把音量发送到另一个音箱上,就算是调节好音量了。

Thursday, March 26, 2009

214特供:要嫁就嫁男程序员 !!

来自豆瓣……
  1. 专一的心,除了计算机就是你!
  2. 不喝酒不发脾气!
  3. 一套衣服穿半年!
  4. 没时间接触其它Girl,想搞婚外恋也没可能。
  5. 平时总加班,所以周末一定会怀着一颗愧疚的心在家陪老婆逛街、看电视、聊天、做家务。
  6. 只认识0和1,基本没理财能力,一定会主动把所有的钱都交给老婆管,还会千恩万谢地。
  7. 知道既然世界上不存在没有Bug的程序,就更加不会有没有缺点的人,所以绝不会老婆太过苛求。
  8. 知道系统若不经常维护就无法保持稳定运行,所以一定会每天都对老婆精心呵护。
  9. 会帮老婆把菜谱改写成if...then...do while的格式,并且带有漂亮的缩进。
  10. 老婆可以对所有的表弟、表妹宣称:“你们的毕业设计我全包了……”
  11. 老婆的QQ不好用了,急得不行。程序员会从容地说:“没事,交给我吧”,然后祭出SoftIce、WinDbg、VisualStidio 20XX调试3小时,最后搞到系统崩溃,重装了事。
  12. 如果将来小孩不爱学习,老婆就可以教育他说:“再不用功,将来就会像你老爹那样,只能作程序员……”
  13. 如果将来小孩沉迷网游,老婆就可以埋汰他说:“你还在玩你老爸在厕所里憋出来的那个破游戏呐?”
  14. 如果将来小孩嫌背单词太枯燥,老婆就可以把程序员的代码拿给他看:“看你老爹为了背单词,重复了多少遍if else for 和 string啊?!”
  15. 嫁给瘦弱的程序员,也许永远无法目睹他像李连杰那样以一敌十的英姿,却也会听到他吼道:“哪个孙子又在QQ上骂你呐?看我不盗了她的号……”
  16. 嫁给程序员,也许一辈子没机会开奔驰、坐宝马,却也会听见他在梦中叹道:“要是奔驰宝马也能盗版就好了……”
  17. 对色彩和流行毫无感觉。所以当老婆从试衣间里走出来的时候,他会故作沉思状地摸摸下巴,然后随机从数组["很可爱","显得你更高挑了","显得你更文雅了","哇,好性感!","好像不太适合你这么瘦的女孩子","好清纯!","这颜色最适合你这样皮肤好的女孩子了","天哪,穿在你身上就是不一样!"]中选择一个Item。
  18. 除了每个月买一本书,就没有其它需要花钱的地方,剩下的钱只能变着法的给老婆买各种首饰和衣服。
  19. 每天都读书到深夜,是孩子的好榜样。
  20. 每天都被Bug和客户双重折磨,有极好的耐心和涵养,就算跟老婆吵架也能保持温柔和冷静,不太可能说出不理智的话伤了老婆的心。

Saturday, March 14, 2009

Google Search

Sunday, March 08, 2009

Mana - Rayando el sol

Rayando el sol
rayando por ti
esta pena, me duele, me quema sin tu amor
no me has llamado, estoy desesperado son
muchas lunas las que te he llorado.
CORO

Rayando el sol, oeooo desesperación es más
fácil llegar al sol, que a tu corazón me muero
por ti oeooo viviendo sin ti y no aguanto, me
duele tanto estar así rayando el sol.
A tu casa yo fui y no te encontré en el
parque, en la plaza, en el cine yo te busqué, te
tengo atrapada entre mi piel y mi alma más
ya no puedo tanto y quiero estar junto a ti.
CORO
(Solo guitarra)
Rayando el sol, oeooo desesperación es más
fácil llegar al sol que a tu corazón oh me muero
por ti, viviendo sin ti y no aguanto,
me duele tanto estar así rayando el sol.
CORO
Rayando por ti
rayando
rayando uuuh, rayando, rayando el sol
rayando ay, ay, ay, ay, rayando el sol
rayando.

Saturday, February 14, 2009

The Boondock Saintes

"
We do not ask for your poor, or your hungry.
We do not want your tired and sick.
It is your corrupt we claim.
It is your evil that will be sought by us.
With every breath, we shall hunt them down.
Each day we will spill their blood,
'til it rains down from the skies.
Do not kill.
Do not rape.
Do not steal.
These are principles which every man of every faith can embrace.
These are not polite suggestions;
these are codes of behavior, and those of you that ignore them will pay the dearest cost.
There are varying degrees of evil.
We urge you lesser forms of filth not to push the bounds and cross over into true corruption, into
our domain.
For if you do, one day you will look behind you and you will see we three,
and on that day you will reap it.
And we will send you to whatever god you wish
"

"
And shepherds we shall be
For Thee, my Lord, for Thee
Power hath descended forth from Thy hand
That our feet may swiftly carry out Thy command
So we shall flow a river forth to Thee
And teeming with souls shall it ever be
In nomine Patri, et Filii, et Spiritus Sancti
"

"
The question is not how far. The question is, do you possess the constitution, the depth of faith, to go as far as is needed
"

Monday, January 19, 2009

加班

周末加班两天。

Wednesday, January 14, 2009

【ZT】统计局是第一生产力

问:左手拿大喇叭说迷.药效果良好,右手拿大喇叭痛斥迷.药危害的是什么?
答:江.湖.骗.子
答案:CCAV

问:女娲要是在当代,补天会用什么材料?
答:还是五彩石
答案:肾结石

问:比上大学还贵的是什么?
答:出国留学
答案:幼儿园

问:为什么有人从几千米高空直接跌落到千米左右,都面不改色?
答:是在飞机里或者是跳伞
答案:他们是中国股民

问:在医院里,病人比得病更痛苦的是什么?
答:高额药费
答案:医生不知道病人的病在哪里。

问:某人第一个月拿1000元工资,第二个月拿700,第三个月拿500,请问工资是降低还是增长?
答:降低
答案:负增长

问:一人有100万,另外一人有0元,请问这个人是不是穷人?
答:是
答案:叫待富

问:全副武装的人与手无寸铁的人进行激烈的搏斗,是什么情形?
答:抗日时期战斗情形
答案:城管执法

问:有人说脱了衣服是禽.兽,穿上衣服是什么?
答:衣.冠.禽.兽
答案:教授(叫兽)

问:你只会有10平米的房屋,邻居从90平米换到190平米,请问你的居住面积有没有增加?
答:没有
答案:你的平均住房面积增加了50平米。

问:明明知道你口袋里只有5元,却搞一大堆数据忽悠说你实际真的有10元的是什么?
答:骗子
答案:统计局

Saturday, January 10, 2009

Google又换Logo了

Google的logo换了一个又一个,我还是觉得第一开始大写的G logo好看,之后的小g和现在的花花g都不好看…………

CCTV新闻联播的30分钟的分配

CCTV新闻联播的30分钟的分配:
前10分钟,领导们都很忙;
中间10分钟,全国人民都很幸福;
后10分钟,国外生活在水深火热中

买了张黄牛票

最后还是买了张黄牛票,多给了一百多。

彩虹 from 伍佰

之前从来没特意去留意,一首歌自己要听几遍才能完全脱离原唱的自己唱出来。虽然自己算不上五音俱全,但是一般来说符合自己口味的曲子听一遍就可以哼哼了,自觉甚是得意。直到有个朋友说自己有首歌听了一般就完全可以长出来,大为惊诧。尝试过n次,还没找到可以听一遍就唱出来的歌。


彩虹
词曲:伍佰
演唱:伍佰&China Blue

慢慢掉下来
满天的棉絮飘在我俩中间
我看着你一闪闪的不见
是微风吹进我屏息的眼
慢慢走过来
移动的树都转到我的背面
将我遗忘那无声的夏天
要回忆起我必须再一遍
光线的尘埃
急促的舞动关于你的形容
若下起雨它变成了彩虹
若我哭泣它飞上了天空
有时候我会想起你
想起你我心颤抖不已
你现在好吗没有我好吗
还是你已经有了另一个家
有时候我想忘了你
那必须将我自己一起抽离
没有痕迹的脚步
我才会变孤独

将你挂起来
你是我心中的温柔的弧线
是阳光穿透水滴的美艳
我坚信不是偶然的相逢
七色彩虹

这是伍佰一手比较另类的歌,曲子中没有鼓点,只有钢琴和偶尔的几下贝司,不摇滚,没有飚高音,没有呐喊。整首歌没有所谓的高潮部分,甚至都没有一句重复的歌词。如同诗朗诵一般。虽然很喜欢,但是听了n遍,还是没记住词儿。

Monday, January 05, 2009

车票

春节又到,中华大地,有钱飞机,没钱站票。望长城内外,大包小包。大河上下,民工滔滔。早起晚睡,达旦通宵,欲与票贩试比高。须钞票。看人山人海,一票难保。车票如此难搞,引无数英雄竞折腰。昔秦皇汉武,见此遁逃;唐宗宋祖,更是没招!一代天骄,成吉思汗,只好骑马往回飙。

Saturday, January 03, 2009

【转】if中G与美开战

据烂的公司报告,如中G与美开战,美军将以如下方略应对:
1、在CCAV和各地方电视台中插播公布各级官员海外存款帐号及金额,并宣布将其冻结
2、宣布将洛杉矶中国二奶村里养着的金丝雀全部卖到拉斯维加斯妓院
3、宣布将拿着中国纳税人的钱在欧美各野鸡大学“流血”的阿哥、格格、贝勒爷全部送进关塔那摩集中营,由虐囚军人看管
4、派出B2轰炸机向中国各大中城市空投AK47和RPG,并配发各级官员扑克牌通缉令,空投对象包括下岗工人、失业学生、城市贫民、失地农民、股民和房奴
5、到时候太平洋舰队的每个军舰的旗杆上都绑上一个阿哥格格

Thursday, January 01, 2009

《飞跃疯人院》和《霍顿与无名氏》

《飞跃疯人院》里的护士长和《霍顿与无名氏》里的袋鼠简直就是一个人。