Redian新闻
>
multi-threading guru们 (转载)
avatar
multi-threading guru们 (转载)# Java - 爪哇娇娃
I*A
1
【 以下文字转载自 JobHunting 讨论区 】
发信人: IAYA (你是我的天使), 信区: JobHunting
标 题: multi-threading guru们
发信站: BBS 未名空间站 (Thu Nov 11 12:25:01 2010, 美东)
java里
Class C{
method 1{}
method 2{}
}
How can we guarantee that method 1 can only be called after method 2 is
called and finished?
Thanks a lot~
avatar
N*m
2
How about
Class C {
method3()
{
method2();
method1();
}

【在 I**A 的大作中提到】
: 【 以下文字转载自 JobHunting 讨论区 】
: 发信人: IAYA (你是我的天使), 信区: JobHunting
: 标 题: multi-threading guru们
: 发信站: BBS 未名空间站 (Thu Nov 11 12:25:01 2010, 美东)
: java里
: Class C{
: method 1{}
: method 2{}
: }
: How can we guarantee that method 1 can only be called after method 2 is

avatar
g*g
3
make method 1 private, set up method 3
public void method3() {
method2;
method1;
}

【在 I**A 的大作中提到】
: 【 以下文字转载自 JobHunting 讨论区 】
: 发信人: IAYA (你是我的天使), 信区: JobHunting
: 标 题: multi-threading guru们
: 发信站: BBS 未名空间站 (Thu Nov 11 12:25:01 2010, 美东)
: java里
: Class C{
: method 1{}
: method 2{}
: }
: How can we guarantee that method 1 can only be called after method 2 is

avatar
l*n
4
thread1.join(); // in thread1 call method1
// in main thread call method2

【在 g*****g 的大作中提到】
: make method 1 private, set up method 3
: public void method3() {
: method2;
: method1;
: }

avatar
N*m
5
这才发现是multithread's context:(

【在 l**********n 的大作中提到】
: thread1.join(); // in thread1 call method1
: // in main thread call method2

avatar
I*A
6
必须创建独立的thread?

【在 l**********n 的大作中提到】
: thread1.join(); // in thread1 call method1
: // in main thread call method2

avatar
m*r
7
我这样写
class job1 {
C obj;
job1 (C c) { obj = c; }
run() {
synchronize (obj) {
if (method2 not done) obj.wait();
obj.method1
}
}
class job2 {
run() {
synchronize (obj) {
obj.method2;
obj.set method2 done;
obj.notifyAll();
}
}
in main thread
C c = new C();
new Thread(new job1(c)).start();
new Thread(new job2(c)).start();
这个应该是本来的意思.

【在 I**A 的大作中提到】
: 【 以下文字转载自 JobHunting 讨论区 】
: 发信人: IAYA (你是我的天使), 信区: JobHunting
: 标 题: multi-threading guru们
: 发信站: BBS 未名空间站 (Thu Nov 11 12:25:01 2010, 美东)
: java里
: Class C{
: method 1{}
: method 2{}
: }
: How can we guarantee that method 1 can only be called after method 2 is

avatar
l*n
8
if only one thread needs be waken up, then use notify, otherwise use
notifyall.

【在 m****r 的大作中提到】
: 我这样写
: class job1 {
: C obj;
: job1 (C c) { obj = c; }
: run() {
: synchronize (obj) {
: if (method2 not done) obj.wait();
: obj.method1
: }
: }

avatar
m*r
9
i re-write job2 like this:
class job2 {
run() {
synchronize (obj) {
obj.method2;
obj.set method2 done;
if (need to wake up only one thread) {
obj.notify();
} else {
obj.notifyAll();
}
}
}

【在 m****r 的大作中提到】
: 我这样写
: class job1 {
: C obj;
: job1 (C c) { obj = c; }
: run() {
: synchronize (obj) {
: if (method2 not done) obj.wait();
: obj.method1
: }
: }

avatar
L*r
10
没意思。一件事一件事地办不就完了?本来就只有一个CPU,
非要Multi-Threading?岂不是自欺欺人?
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。