牛客刷题总结7

文章讨论了Java中的选择语句,volatile关键字的线程同步特性,GBK到UTF-8的编码转换,以及ArrayList在多线程环境下的使用。示例代码展示了synchronized在保证线程安全方面的作用,以及可能出现的竞争条件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.以下对选择语句描述错误的是

        答:        选择语句可以嵌套使用(switch case不能嵌套使用)

2.volatile关键字说法错误的是

        答:        能保证线程安全(volatile关键字不能保证线程安全,它只是提供了一种弱的同步机制来保证修饰的变量的更新操作通知到其他线程)

3.下列哪段程序能够正确的显示GBK编码字节流到UTF-8编码字节流的改变

        答:        dst=new String(src,"GBK").getBytes("UTF-8")

4.关于下列代码,正确的两项是

public class NameList
{
    private List names = new ArrayList();
    public synchronized void add(String name)
    {
        names.add(name);
    }
    public synchronized void printAll() {
        for (int i = 0; i < names.size(); i++)
        {
            System.out.print(names.get(i) + "");
        }
    }
 
    public static void main(String[]args)
    {
        final NameList sl = new NameList();
        for (int i = 0; i < 2; i++)
        {
            new Thread()
            {
                public void run()
                {
                    sl.add("A");
                    sl.add("B");
                    sl.add("C");
                    sl.printAll();
                }
            } .start();
        }
    }
}

        答:         代码输出“A B C A B C A B C”

                        代码输出“A B C A  A B C A B C”

5.以下哪种JAVA的变量声明方式可以避免程序在多线程竞争情况下读到不正确的值

        答:        volatile

                        static volatile

        拓展:        synchronized可以修饰方法、代码块或对象,并不修饰变量

                           static修饰的变量属于类,线程在使用这个属性的时候是从类中拷贝一份到线程工作内存的,如果修改线程内存中的值之后再写回到原先的位置,就会有线程安全问题,用static修饰的变量可见性是无法确保的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值