—–Account.Account(QString;D)V C-Units=2 1 constructor 2 3 / 4 * @Generated-Summary : sets name to the input nm string. 5 * <Gen-End> 6 */ 7 public Account(String nm,double amnt ) { 8 amount=amnt; 9 name=nm; 10 } GS_Method_End GS-generated-text-begin 6 set|amount|to|amnt. 7 set|name|to|nm string. GS-generated-text-end GS-text-for-eval-begin 6 set|amount|to|amnt. 7 set|name|to|nm. GS-text-for-eval-end —–Account.depsite(D)V C-Units=1 1 functions 2 3 / 4 * @Generated-Summary : adds the input money to amount. 5 * <Gen-End> 6 */ 7 synchronized void depsite(double money){ 8 amount+=money; 9 } GS_Method_End GS-generated-text-begin 6 add|money|to|amount. GS-generated-text-end GS-text-for-eval-begin 6 add|money|to|amount. GS-text-for-eval-end —–Account.withdraw(D)V C-Units=1 1 / 2 * @Generated-Summary : froms the input money null amount. 3 * <Gen-End> 4 */ 5 synchronized void withdraw(double money){ 6 amount-=money; 7 } GS_Method_End GS-generated-text-begin 6 from|money|null|amount. GS-generated-text-end GS-text-for-eval-begin 6 from|money|null|amount. GS-text-for-eval-end —–Account.transfer(QAccount;D)V C-Units=7 1 / 2 * @Generated-Summary : froms the input mn null amount. adds the input mn to amount. adds the input mn to amount. 3 * 4 * Details: froms the input mn null amount. adds the input mn to amount. prints “unprotected”, arg0. 5 * adds the input mn to amount. adds the input mn to amount. 6 * <Gen-End> 7 */ 8 synchronized void transfer(Account ac,double mn){ 9 amount-=mn; 10 System.out.println(“ac.amount is $”+ac.amount); 11 if (name.equals(“D”)) { 12 System.out.println(“unprotected”); 13 ac.amount+=mn;no aquire for the other lock!! 14 += might cause problem –it is not atomic. 15 } else { 16 System.out.println(“protected”); 17 synchronized (ac) { ac.amount+=mn; } 18 } 19 } GS_Method_End GS-generated-text-begin 9 from|mn|null|amount. 11 if equals object arg 0 succeeds 12 println|“unprotected”, arg0. 13 add|mn|to|amount. 17 add|mn|to|amount. GS-generated-text-end GS-text-for-eval-begin 9 from|mn|null|amount. 11 if equals object arg 0 succeeds 12 println|“unprotected”, arg0. 13 add|mn|to|amount. 17 add|mn|to|amount. GS-text-for-eval-end —–Account.print()V C-Units=0 1 synchronized void print(){ 2 } GS_Method_End GS-generated-text-begin GS-generated-text-end GS-text-for-eval-begin GS-text-for-eval-end —–ManageAccount.ManageAccount(QString;D)V C-Units=4 1 / 2 * @Generated-Summary : sets acc num to (accNum + 1) % num. sets i to acc num. creates account. creates account. sets i to acc num. 3 * sets acc num to (accNum + 1) % num. 4 * <Gen-End> 5 */ 6 public ManageAccount(String name,double amount) { 7 account=new Account(name,amount); 8 i=accNum; 9 accounts[i]=account; 10 accNum=(accNum+1)%num;the next index in a cyclic order 11 } GS_Method_End GS-generated-text-begin 7 create|account. 8 set|i|to|acc num. 9 accounts[i]=account; [default] 10 set|acc num|to|(accNum + 1) % num. GS-generated-text-end GS-text-for-eval-begin 7 create|account and assign|to|Account. 8 set|int|to|acc num. 9 accounts[i]=account; [default] 10 set|acc num|to|(accNum + 1) % num. GS-text-for-eval-end —–ManageAccount.run()V C-Units=8 1 public void run(){ 2 account.depsite(300); 3 account.transfer(accounts[(i+1)%num],10); 4 account.depsite(10); 5 account.transfer(accounts[(i+2)%num],10); 6 account.withdraw(20); 7 account.depsite(10); 8 account.transfer(accounts[(i+1)%num],10); 9 account.withdraw(100); 10 } GS_Method_End GS-generated-text-begin 2 depsite|300, money. 3 transfer|accounts[(i + 1) % num]. 4 depsite|10, money. 5 transfer|accounts[(i + 2) % num]. 6 withdraw|20, money. 7 depsite|10, money. 8 transfer|accounts[(i + 1) % num]. 9 withdraw|100, money. GS-generated-text-end GS-text-for-eval-begin 2 depsite|300, money. 3 transfer|accounts[(i + 1) % num]. 4 depsite|10, money. 5 transfer|accounts[(i + 2) % num]. 6 withdraw|20, money. 7 depsite|10, money. 8 transfer|accounts[(i + 1) % num]. 9 withdraw|100, money. GS-text-for-eval-end —–ManageAccount.printAllAccounts()V C-Units=2 1 / 2 * @Generated-Summary : prints Account. 3 * <Gen-End> 4 */ 5 static public void printAllAccounts(){ 6 for (int j=0;j<num;j++) 7 { 8 ManageAccount.accounts[j].print();print it 9 } 10 }

GS_Method_End

GS-generated-text-begin

8 print|Account.

GS-generated-text-end

GS-text-for-eval-begin

8 print|Account.

GS-text-for-eval-end

—–Main.main([QString;)V C-Units=22 1 /** 2 * @Generated-Summary : joins Thread. 3 * 4 * Details: assigns true to bug. assigns true to bug. initializes k with 0. initializes bug with false. prints all accounts. joins Thread. initializes k with 0. starts Thread. initializes k with 0. prints Account. initializes j with 0. initializes account name with {new String(“A”),new String(“B”),new String(“C”),new String(“D”),new String(“E”),new String(“F”),new String(“G”),new String(“H”),new String(“I”),new String(“J”)}. initializes bank with new ManageAccount[ManageAccount. num]s. sets num to 5. for (int k=0; k < ManageAccount.num; k++) { ;; starts Thread. starts Thread. 5 * for (int k=0; k < ManageAccount.num; k++) { ;; joins Thread. joins Thread. 6 * <Gen-End> 7 */ 8 public static void main(String[] args) { 9 10 try{ 11 ManageAccount.num = 5; 12 ManageAccount[] bank=new ManageAccount[ManageAccount.num]; 13 String[] accountName={new String(“A”),new String(“B”),new String(“C”),new String(“D”),new String(“E”), 14 new String(“F”),new String(“G”),new String(“H”),new String(“I”),new String(“J”),}; 15 for (int j=0;j<ManageAccount.num;j++){ 16 bank[j]=new ManageAccount(accountName[j],100); 17 ManageAccount.accounts[j].print();;print it 18 } 19 20 21 start the threads 22 for (int k=0;k<ManageAccount.num;k++){ 23 bank[k].start(); 24 } 25 26 wait until all are finished 27 for (int k=0;k<ManageAccount.num;k++){ 28 bank[k].join(); 29 } 30 ManageAccount.printAllAccounts(); 31 32 updating the output file 33 boolean bug = false; 34 flags which will indicate the kind of the bug 35 for (int k=0;k<ManageAccount.num;k++){ 36 System.out.println(“account ”+k+“ has $”+ManageAccount.accounts[k].amount); 37 if(ManageAccount.accounts[k].amount<300){ 38 bug=true; 39 } 40 else if(ManageAccount.accounts[k].amount>300){ 41 bug=true; 42 } 43 } 44 45 if(bug) 46 throw new RuntimeException(“bug found”); 47 48 } catch(InterruptedException e){ 49 } 50 51 }end of function main GS_Method_End GS-generated-text-begin 10 try { [default] 11 set|num|to|5. 12 initialize|bank|with|new ManageAccount[ManageAccount.num]. 13 initialize|account name|with|{new String(“A”),new String(“B”),new String(“C”),new String(“D”),new String(“E”),new String(“F”),new String(“G”),new String(“H”),new String(“I”),new String(“J”)}. 16 bank[j]=new ManageAccount(accountName[j],100); [default] 17 print|Account. 17 ; [default] 23 start|Thread. 28 join|Thread. 30 print|all accounts. 33 initialize|bug|with|false. 37 if amount of Account < 300 38 assign|true|to|bug. 40 if amount of Account > 300 41 assign|true|to|bug. 45 if 46 throw new RuntimeException(“bug found”); [default] GS-generated-text-end GS-text-for-eval-begin 10 try { [default] 11 set|num|to|5. 12 initialize|bank|with|new ManageAccount[ManageAccount.num]. 13 initialize|account name|with|{new String(“A”),new String(“B”),new String(“C”),new String(“D”),new String(“E”),new String(“F”),new String(“G”),new String(“H”),new String(“I”),new String(“J”)}. 16 bank[j]=new ManageAccount(accountName[j],100); [default] 17 print|Account. 17 ; [default] 23 start|Thread. 28 join|Thread. 30 print|all accounts. 33 initialize|bug|with|false. 37 if amount of Account < 300 38 assign|true|to|bug. 40 if amount of Account > 300 41 assign|true|to|bug. 45 if 46 throw new RuntimeException(“bug found”); [default] GS-text-for-eval-end

project_2/account.txt · Last modified: 2012/07/10 16:20 by t.amrutha
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0