Java多线程线程安全面试题

  1. 如何在Java中实现线程?

    • 可以继承 java.lang.Thread 类,该类的实例就是一个线程(本身就是调用的Runnable接口),重写run()方法。
    • 直接调用Runnable接口来重写run()方法实现线程。
    • 创建 Callable 接口的实现类,并实现 call() 方法,该 call() 方法将作为线程执行体,并且有返回值。创建 Callable 实现类的实例,使用 FutureTask 类来包装 Callable 对象。使用 FutureTask 对象作为 Thread 对象的 target 创建并启动新线程。
  2. 用Runnable还是Thread?

    • Java不支持类的多重继承,但允许调用多个接口。所以如果要继承其他类,当然是调用Runnable接口好 了。
    • Thread(Runnable threadOb,String threadName);当需要多个线程操作同一个对象时,把要操作的数据封装入Runnable的实现类中,然后将Runnable实例传入多个Thread对象中,就可以实现一个对象数据在多个线程的共享。
  3. Java中Runnable和Callable有什么不同?

    Runnable和Callable都代表那些要在不同的线程中执行的任务。Runnable从JDK1.0开始就有了,Callable是在 JDK1.5增加的。它们的主要区别是Callable的 call() 方法可以返回值和抛出异常,而Runnable的run()方法没有这些功能。Callable可以返回装载有计算结果的Future对象。

  4. Java内存模型

    Java内存模型控制线程间的通信,保证线程之间的可见性。。定义了一些规则,happens-before,volatile等。

  5. 什么是线程安全?

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

【参考文档】
ava多线程面试题整理及答案(2018年)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值