Java面试题系列——JavaSE面试题(线程二)

1、什么是线程安全?

        如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。

2、如何解决多线程间线程安全问题?

(1)加锁:

synchronized----自动锁:

Runnable tast01=new Runnable() { //匿名内部类
            @Override
            public void run() {
                synchronized (arr) { //()锁资源-----共享资源作为锁资源.只要使用的是同一把锁资源就可以上锁成功。
                    if (arr[index] == null) { //时间到了
                        arr[index] = "hello";
                        index++;
                    }
                }
}

lock------手动锁:

 @Override
 public void run() {
                try {
                    lock.lock();//上锁
                    if (arr[index] == null) { //时间到了
                        arr[index] = "hello";
                        index++;
                    }
                }finally {
                   lock.unlock();//解锁
          }
}

3、为什么使用同步锁,就可以让多线程解决线程安全问题?

        可以将一个线程理解为一个人,同步代码块为一个只有一个入口的房子。多个线程在想要进入房子的时候,cpu给入口安装了一个门,门上只有一把钥匙,这里的门和配对的钥匙就是同步监听器(锁对象了)。一个线程进入房子后,将钥匙带走,其他人没有钥匙就无法开门进入房子,只有等待那个线程从房子出来,将钥匙放回去让下拨人继续抢钥匙。抢到了才有机会进入,这里的门和钥匙就是唯一不变的。

4、什么是线程同步?

        处理多线程问题时,多个线程访问同一个对象,并且某些线程还想修改这个对象。 这时候,我们就需要用到“线程同步”。 线程同步其实就是一种等待机制,多个需要同时 访问此对象的线程进入这个对象的等待池形成队列,等待前面的线程使用完毕后,下一个线 程再使用。

5、什么是同步代码块?

        同步代码块指在代码块前加上 synchronized关键字的代码块。

synchronized(同步对象){
需要同步的代码;
}

6、同步代码块和同步函数之间有什么区别?

区别:(1)同步方法默认用this或者当前类class对象作为锁;同步代码块可以选择以什么来加锁,比同步方法要更细颗粒度,我们可以选择只同步会发生同步问题的部分代码而不是整个方法;(2)同步方法使用关键字 synchronized修饰方法,而同步代码块主要是修饰需要进行同步的代码,用   synchronized(object){代码内容}进行修饰;

持续更新中,敬请期待!

参考文章:

什么是线程安全_长睡将军的博客-CSDN博客_什么是线程安全

解决多线程安全问题_A_M阿木的博客-CSDN博客_多线程安全问题怎么解决

多线程-线程安全问题的解决_一个很酷的女巫_的博客-CSDN博客_多线程问题怎么解决

多线程安全的解决方法 - 知乎

为什么解决线程安全问题,多个线程要用同一个同步监听器,俗称锁_goku_liu的博客-CSDN博客

线程同步_百度百科

什么是线程同步_科比·布莱恩特【24】的博客-CSDN博客_什么是线程同步

什么是线程同步?_datuzijean的博客-CSDN博客_线程同步是什么意思

同步代码块_百度百科

同步方法和同步代码块的区别是什么?__牛客网

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小海海不怕困难

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值