I**A 发帖数: 2345 | 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~ |
N***m 发帖数: 4460 | 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
|
g*****g 发帖数: 34805 | 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
|
l**********n 发帖数: 8443 | 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; : }
|
N***m 发帖数: 4460 | 5 这才发现是multithread's context:(
【在 l**********n 的大作中提到】 : thread1.join(); // in thread1 call method1 : // in main thread call method2
|
I**A 发帖数: 2345 | 6 必须创建独立的thread?
【在 l**********n 的大作中提到】 : thread1.join(); // in thread1 call method1 : // in main thread call method2
|
m****r 发帖数: 6639 | 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
|
l**********n 发帖数: 8443 | 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 : } : }
|
m****r 发帖数: 6639 | 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 : } : }
|
L*******r 发帖数: 8961 | 10 没意思。一件事一件事地办不就完了?本来就只有一个CPU,
非要Multi-Threading?岂不是自欺欺人? |