Redian新闻
>
最近研究了一下 java AbstractQueuedSynchronizer
avatar
最近研究了一下 java AbstractQueuedSynchronizer# Programming - 葵花宝典
n*r
1
刚开始postdoc几个月,本来以为今年申请没戏了,今天意外收到第一个onsite机会,
看来大家一定要挺住啊!
系主任后来又发信说,onsite之前他想先电话聊一下15分钟大概,请教一下这个是什么
状况?另外请教一个申请中看到的Junior Chair position是什么意思呢?谢啦~~
avatar
a*a
2
haha
avatar
y*i
3
最新版的macair 13',要看土豆,不得不装了flash,但是好像电池支持时间变短了?
是错觉还是真的?
avatar
b*e
4
到目的地之后不能显示在路哪一侧,到处看,差点撞到。新版本的igo可以显示那个了
吗?或者旧版本的装个插件之类的有
吗?
avatar
c*e
5
觉得 Doug lee 很 厉害, 那种 多线程同步的class implementation 写的太牛B了。
虽然我还是没怎么看懂。。。。
avatar
S*t
6
之前没有电面么?直接onsite?

★ 发自iPhone App: ChineseWeb - 中文网站浏览器

【在 n*******r 的大作中提到】
: 刚开始postdoc几个月,本来以为今年申请没戏了,今天意外收到第一个onsite机会,
: 看来大家一定要挺住啊!
: 系主任后来又发信说,onsite之前他想先电话聊一下15分钟大概,请教一下这个是什么
: 状况?另外请教一个申请中看到的Junior Chair position是什么意思呢?谢啦~~

avatar
k*n
7
那次没打???
不觉得厉害。。
他老子是个低能。。。自己讨打。。。
avatar
s*n
8
真的

【在 y****i 的大作中提到】
: 最新版的macair 13',要看土豆,不得不装了flash,但是好像电池支持时间变短了?
: 是错觉还是真的?

avatar
f*g
9
早有了

【在 b*****e 的大作中提到】
: 到目的地之后不能显示在路哪一侧,到处看,差点撞到。新版本的igo可以显示那个了
: 吗?或者旧版本的装个插件之类的有
: 吗?

avatar
w*z
10
Java Concurrency in Practice
by Brian Goetz
此人也牛掰。

【在 c*****e 的大作中提到】
: 觉得 Doug lee 很 厉害, 那种 多线程同步的class implementation 写的太牛B了。
: 虽然我还是没怎么看懂。。。。

avatar
n*r
11
之前只有一个其他学校的电面。。。
这个学校第一封信就是问我有没有兴趣去campus interview
一般onsite前都有电面吗?会问什么呢?

【在 S*******t 的大作中提到】
: 之前没有电面么?直接onsite?
:
: ★ 发自iPhone App: ChineseWeb - 中文网站浏览器

avatar
c*a
12
这书的好处就是不会连续几章都让主角吃瘪,然后兜个大圈子再回来打脸。 风格就是
失去的场子几乎本章或者下一章就通过打脸找回来了。属于有仇旧报,决不过夜的风格
avatar
y*i
13
啊,
有没有啥新出的patch可以解决这个问题?

【在 s*n 的大作中提到】
: 真的
avatar
t*p
14
primo 1.1 可以

【在 b*****e 的大作中提到】
: 到目的地之后不能显示在路哪一侧,到处看,差点撞到。新版本的igo可以显示那个了
: 吗?或者旧版本的装个插件之类的有
: 吗?

avatar
g*9
15
Such low level concurrent program is almost impossible to understand without
detailed design documentation. Understanding Jvm memory model is enough.

【在 c*****e 的大作中提到】
: 觉得 Doug lee 很 厉害, 那种 多线程同步的class implementation 写的太牛B了。
: 虽然我还是没怎么看懂。。。。

avatar
l*n
16
cong,bless

【在 n*******r 的大作中提到】
: 刚开始postdoc几个月,本来以为今年申请没戏了,今天意外收到第一个onsite机会,
: 看来大家一定要挺住啊!
: 系主任后来又发信说,onsite之前他想先电话聊一下15分钟大概,请教一下这个是什么
: 状况?另外请教一个申请中看到的Junior Chair position是什么意思呢?谢啦~~

avatar
G*s
17
这几章其实写得不错
avatar
d*t
18
hehe, no.

【在 y****i 的大作中提到】
: 啊,
: 有没有啥新出的patch可以解决这个问题?

avatar
c*e
19
这本书是很经典,把很多基本概念解释的很清楚。
AbstractQueuedSynchronizer 很核心,是所有 reentrantlock, futuretask,
countdownbatch, cyclicbarrier, readwritelock 的 实现基石. 强烈建议学 java 的
学习一下。
G 家写 Guava 的那帮人也很厉害,完全写了一个自己的 FutureTask 而不是基于
AbstractQueuedSynchronizer的。
国人有写大系统的,但是这种千锤百炼的核心代码似乎还没有写出来的。这就类似于飞
机的发动机还做不出来差不多。

【在 w**z 的大作中提到】
: Java Concurrency in Practice
: by Brian Goetz
: 此人也牛掰。

avatar
n*r
20
Thanks:)

【在 l*****n 的大作中提到】
: cong,bless
avatar
a*a
21
电池不就是用的么
avatar
n*n
22
看不懂就是厉害?

【在 c*****e 的大作中提到】
: 觉得 Doug lee 很 厉害, 那种 多线程同步的class implementation 写的太牛B了。
: 虽然我还是没怎么看懂。。。。

avatar
Q*9
23
same to me:
这个学校第一封信就是问我有没有兴趣去campus interview
which school? or which area in US? department?

【在 n*******r 的大作中提到】
: 之前只有一个其他学校的电面。。。
: 这个学校第一封信就是问我有没有兴趣去campus interview
: 一般onsite前都有电面吗?会问什么呢?

avatar
c*e
24
你算哪根葱?

【在 n******n 的大作中提到】
: 看不懂就是厉害?
avatar
n*r
25
不错啊~~~Good luck!

【在 Q**9 的大作中提到】
: same to me:
: 这个学校第一封信就是问我有没有兴趣去campus interview
: which school? or which area in US? department?

avatar
n*n
26
我不会评价自己看不懂的东西牛B。看不懂怎么评价?无非转发别人的评价而已。

【在 c*****e 的大作中提到】
: 你算哪根葱?
avatar
n*r
27
我申请的是ME/MSE方向,呵呵

【在 Q**9 的大作中提到】
: same to me:
: 这个学校第一封信就是问我有没有兴趣去campus interview
: which school? or which area in US? department?

avatar
c*e
28
AbstractQueuedSynchronizer 果然是神器,以前做那道h2O 的题总觉得不对,
用神器就舒服多了,而且感觉基本上是对的。欢迎提错。
值得改进的地方就是 countH & countO 可以直接存到 state integer 里面去。
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.locks.AbstractQueuedSynchronizer;
public class H2O {
MySync sync = new MySync();
CountDownLatch latch = new CountDownLatch(3);
Object guard = new Object();
Data data = new Data();
class Data {
Object h1;
Object h2;
Object o;
}
public void putH(Object x) throws InterruptedException {
sync.acquireShared(1);
synchronized (guard) {
if (data.h1== null) {
data.h1 = x;
} else {
data.h2 = x;
}
}
latch.countDown();
latch.await();
}
public void makeH2O(Data data) {
// ...
}
public void putO(Object x) throws InterruptedException {
sync.acquireShared(-1);
synchronized (guard) {
data.o = x;
}
latch.countDown();
latch.await();
makeH2O(data);
data = new Data();
latch = new CountDownLatch(3);
sync.releaseShared(0);
}
class MySync extends AbstractQueuedSynchronizer {
public int STATE_EMPTY = 0;
public int STATE_OK = 1;
public AtomicInteger countH = new AtomicInteger(0);
public AtomicInteger countO = new AtomicInteger(0);
public MySync() {
this.setState(STATE_EMPTY);
}
@Override
protected int tryAcquireShared(int arg) {
assert arg == 1 || arg == -1;
if (arg == 1 && countH.get() < 2) { // mean H
countH.addAndGet(1);
setState(STATE_OK);
return 1;
}
if (arg == -1 && countO.get() == 0) { // mean O
countO.addAndGet(1);
setState(STATE_OK);
return 1;
}
return -1;
}
@Override
protected boolean tryReleaseShared(int arg) {
assert arg == 0;
assert getState() == STATE_OK;
setState(STATE_EMPTY);
return true;
}
}
}

【在 c*****e 的大作中提到】
: 觉得 Doug lee 很 厉害, 那种 多线程同步的class implementation 写的太牛B了。
: 虽然我还是没怎么看懂。。。。

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。