以下問題,如果用內部類的方式可以解決,但分在三個獨立類里,物件引數不知道怎么傳遞。
這是一個要操作的類,每次運行deposit方法就為amount變數加1,用synchronized做同步。
public class Account {
int amount;
Account() {
}
public synchronized void deposit() {
amount += 1;
}
}
這個類搞執行緒池,Account類的實體化物件放在這里。
public class AccountWithSync {
Account myaccount = new Account();
public static void main(String[] args) {
ExecutorService executor = Executors.newCachedThreadPool();
for (int i = 0; i < 10; i++) {
executor.execute(new addOnePenny());
}
}
}
實作Runnable介面的類,以便主類可以用執行緒池。必須在這個類里完成呼叫Account類的deposit方法,可是它的實體化物件myaccount卻在AccountWithSync那個類里面。
class addOnePenny implements Runnable{
@Override
public void run() {
}
}
uj5u.com熱心網友回復:
public class AccountWithSync {
static Account myaccount = new Account();
public static void main(String[] args) {
ExecutorService executor = Executors.newCachedThreadPool();
for (int i = 0; i < 10; i++) {
executor.execute(new addOnePenny(myaccount ));
}
}
}
class addOnePenny implements Runnable{
private Account account;
public addOnePenny(Account account){
this.account = account;
}
@Override
public void run() {
account.deposit();
}
}
uj5u.com熱心網友回復:
在 addOnePenny 類里加個Account 型別的成員變數,然后加個addOnePenny(Account a)構造方法把Account物件賦給addOnePenny的成員變數,這樣在addOnePenny的方法里就可以操作Account成員變數了。main方法里
executor.execute(new addOnePenny(myaccount)); 即可,所有執行緒就會共享這個myaccount
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/8249.html
標籤:Java SE
上一篇:大神幫解決一下
下一篇:行程是如何請求到資源的?
