classAccount{privateintbalance;publicvoidsetBalance(intb){balance=b;}publicintgetBalance(){returnbalance;}publicvoidclearBalance(){balance=0;}}哪一个改变可以使Account类线程安全?()A.在第2行加synchronized修饰符。B.在第3行加synchronized修饰符。C.在第3行、第4行和第6行加synchronized修饰符。D.在第4行、第6行和第

题目
classAccount{privateintbalance;publicvoidsetBalance(intb){balance=b;}publicintgetBalance(){returnbalance;}publicvoidclearBalance(){balance=0;}}哪一个改变可以使Account类线程安全?()

A.在第2行加synchronized修饰符。

B.在第3行加synchronized修饰符。

C.在第3行、第4行和第6行加synchronized修饰符。

D.在第4行、第6行和第8行加synchronized修饰符。


相似考题
更多“classAccount{privateintbalance;publicvoidsetBalance(intb){balance=b;}publicintgetBalance(){returnbalance;}publicvoidclearBalance(){balance=0;}}哪一个改变可以使Account类线程安全?() ”相关问题
  • 第1题:

    阅读下列代码片段 class InterestTest——ActionListener{ public"void actionPerformed(ActionEvent event){ double interest=balance*rate/1 00 ; balance+=interest; NumberFormat format=NumberFormat.getCur- rencyInstance; System.OUt.print]b("balance="+formatter. format(balance)); } Private double rate; } 在下画线处,应填的正确选项是( )。

    A.Implementation

    B.Inheritance

    C.implements

    D.extends


    正确答案:D
    D。【解析】继承父类应使用的关键词为extends。

  • 第2题:

    阅读下列代码片段 class InterestTest______ActionListener{ public voidactionPerformed(ActionEventevent){ double interest=balance*rate/100; balance+=interest; NumberFormat format=Number Format.getCurrencylnstance(): System.out.print]b("balance="+formatter.format(balance)}; } Privatedoublerate; } 在下划线处,应填的正确选项是( )。

    A.Implementation

    B.Inheritance

    C.implements

    D.extends


    正确答案:C
    解析:继承父类应使用的关键词为extends。

  • 第3题:

    写出下面代码的运行结果。def addInterest(balance,rate): newBalance=balance*(1+rate) balance=newBalance def main(): amount=1000 rate=0.05 addInterest(amount,rate) print (amount) main()


    A

  • 第4题:

    现有人编写了帐号类Account,用于管理个人的存款余额, public Account{ private double balance; //帐号余额,余额最低为0 public double getBalance(){ return balance; } Public void setBalance(double b){ balance=b; } public double withdrawl(double money) throws Exception { //取款,money如果为负数或余额不足,抛出异常 } } 请用错误推测法为withdrawl()函数至少设计3个测试用例,并写出基于Junit的测试代码 。


    正确答案:
    publicclassTestSampleextendsTestCase{publicvoidtestWithDrawlEqual(doublemoney){Accounta=newAccount();a.setAccount(5);doubleresult=a.withdrawl(5);Assert.assertEquals(0,result);}publicvoidtestWithDrawlNegative(){try{Accounta=newAccount();a.setAccount(5);doubleresult=a.withdrawl(-1);fail();}catch(Exceptionerr){Assert.assertTrue(true);}}publicvoidtestWithDrawlTooMuch(){try{Accounta=newAccount();a.setAccount(5);doubleresult=a.withdrawl(8);fail();}catch(Exceptionerr){Assert.assertTrue(true);}}}

  • 第5题:

    阅读以下说明、Java代码,将应填入(n)处的字句写在答题纸的对应栏内。

    【说明】

    IC卡和200卡都是从电话卡派生的。下面的程序将电话卡定义为抽象类。其中 balance为双精度变量,代表电话卡中的余额;cardNumber是长整型变量,代表电话卡的卡号;password是整型变量,代表电话卡的密码;connectNumber是字符串变量,代表电话卡的接入号码;connected是布尔变量,代表电话是否接通。

    performDial()实现各种电话接通后的扣除费用的操作。其中200卡每次通话扣除0.5元的通话费用和附加费用;IC卡每次通话扣除0.9元的通话费。TimeLeft()方法用于测试电话卡余额还可以拨打电话的次数。performConnection()用于电话接入操作,如果卡号和密码正确,则接通;否则,接不通。

    【程序】

    abstract class PhoneCard

    {

    doubte balace;

    (1) perfermDial();

    double getBalance()

    { return balance; }

    double TimeLeft()

    {

    double current=balance;

    int times=0;

    do

    {

    (2)

    times++;

    }white(balance>=0);

    balance=current;

    return times-1;

    }

    }

    abstract class Number_PhoneCard extends PhoneCard

    {

    long cardNumber:

    int password;

    String connectNumber;

    Boolean connected;

    Boolean performConnection(long cn, int pw)

    {

    if(cn==cardNumber && (3) )

    {

    connected=true;

    return true;

    }

    else return false;

    }

    }

    class IC Card (4)

    {

    boolean performDial()

    {

    if(balance>0.9)

    {

    balance-=0.9;

    return true;

    }

    else return false;

    }

    }

    class D200_Card (4)

    {

    static double additoryFee;

    static{ additoryFee=0.1; }

    boolean performDial()

    {

    if(balance>(0,5+additeryFee))

    {

    (5)

    return true;

    }

    else return false;

    }

    }


    正确答案:(1)abstract Boolean (2)performDial(); (3)pw==password (4)extends Number_PhoneCard (5)balance-=0.5+additoryFee;
    (1)abstract Boolean (2)performDial(); (3)pw==password (4)extends Number_PhoneCard (5)balance-=0.5+additoryFee; 解析:本题考查Java对抽象类的定义、继承及电话卡业务的实现。
    在Java程序设计语言中,抽象类是指在类中定义了抽象成员函数的类,程序中把基类PhoneCard定义为抽象类,其中有一个成员变量和三个成员函数,但是已给出定义的两个函数都不是抽象成员函数。因此,第(1)空的作用是把成员函数performDial0定义为抽象成员函数,结合后面的程序我们可以知道,函数performDial()的返回类型是布尔型,因此,此空的答案为abstract Boolean。
    第(2)空在函数TimeLeft()中,此函数用于测试电话卡余额还可以拨打电话的次数,要实现此功能应该知道每次电话接通后扣除的费用,函数performDial()能实现这个功能,此处应该是调用这个函数,因此,此空答案为performDial()。
    第(3)空在函数performConnection()中,此函数用于电话接入操作,如果卡号和密码正确,则接通;否则,接不通。结合程序中代码,我们知道此空是要判断密码是否正确,而参数pw中存放的是密码,因此,此空答案为pw==password。
    第(4)空是在派生类的定义时,对派生类继承关系的说明。电话卡的所有属性在抽象类Number_PhoneCard中都有了完整的定义,那么这两个电话卡的派生类应该继承 Number_PhoneCard抽象类,因此,此空答案为extends Number_PhoneCard。
    第(5)空在D200_Card类的performDial()函数中,这个函数的作用是对200卡每次通话进行扣费操作。根据题目条件,200卡每次通话扣除0.5元,再结合程序中的内容,我们可以推导出第(5)空要完成的任务是费用扣除操作,因此,此空答案为 balance-=0.5+additoryFee。