• java并发面试题(带答案)


    多线程

    1. java中有几种方法可以实现一个线程?   
       答:在Java中实现一个线程有两种方法,第一是实现Runnable接口实现它的run()方法,第二种是继承Thread类,覆盖它的run()方法。这两种方法的区别是,如果你的类已经继承了其它的类,那么你只能选择实现Runnable接口了,因为Java只允许单继承的。

    2.如何停止一个正在运行的线程?

    答:当不阻塞时候设置一个volatile类型标志位变量,让代码块正常运行结束并停止线程。如果发生了阻塞,先设置volatile类型变量标志位,再调用Thread.interrupt()方法。这一方法实际上完成的是,在线程受到阻塞时抛出一个中断信号,这样线程就得以退出阻塞的状态。

    参考:http://blog.csdn.net/liangliyin/article/details/7313665

    3.notify()和notifyAll()有什么区别?

    答:1)notify()和notifyAll()都是Object对象用于通知处在等待该对象的线程的方法。
                   2)void notify(): 唤醒一个正在等待该对象的线程。
                   3)void notifyAll(): 唤醒所有正在等待该对象的线程。
            两者的最大区别在于:
                   notifyAll使所有原来在该对象上等待被notify的线程统统退出wait的状态,变成等待该对象上的锁,一旦该对象被解锁,他们就会去竞争。
             notify他只是选择一个wait状态线程进行通知,并使它获得该对象上的锁,但不惊动其他同样在等待被该对象notify的线程们,当第一个线程运            行完毕以后释放对象上的锁,此时如果该对象没有再次使用notify语句,即便该对象已经空闲,其他wait状态等待的线程由于没有得到该对象的          通知,继续处在wait状态,直到这个对象发出一个notify或notifyAll,它们等待的是被notify或notifyAll,而不是锁。

    4.sleep()和 wait()有什么区别?

    答:sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep不会释放对象锁。
    wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。

    5.什么是Daemon线程?它有什么意义?
           答:所谓后台(daemon)线程,是指在程序运行的时候在后台提供一种通用服务的线程,并且这个线程并不属于程序中不可或缺的部分。因此,当所有的非后台线程介绍时,程序也就终止了,同时会杀死进程中的所有后台线程。反过来说,只要有任何非后台线程还在运行,程序就不会终止。必须在线程启动之前调用setDaemon()方法,才能把它设置为后台线程。注意:后台进程在不执行finally子句的情况下就会终止其run()方法。

    6.java如何实现多线程之间的通讯和协作?
          答: Java提供了3个非常重要的方法来巧妙地解决线程间的通信问题。这3个方法分别是:wait()、notify()和notifyAll()。它们都是Object类的最终方法,因此每一个类都默认拥有它们。虽然所有的类都默认拥有这3个方法,但是只有在synchronized关键字作用的范围内,并且是同一个同步问题中搭配使用这3个方法时才有实际的意义。这些方法在Object类中声明的语法格式如下所示:

    final void wait() throws InterruptedException
    final void notify()
    final void notifyAll()

    http://blog.csdn.net/geolo/article/details/8670900

  • 相关阅读:
    EF的Join()和Include()差异性教程
    把sql server 2000的用户表的所有者改成dbo
    HTML5/CSS3开发工具
    原创:分享asp.net伪静态成目录形式iis如何设置
    WCDMA是什么意思?CDMA是什么意思?GSM是什么意思
    FlashDevelop快捷键
    android文章学习 侧滑菜单实现
    网页图片格式
    asp.net日志跟踪方法
    Zabbix分布式监控
  • 原文地址:https://www.cnblogs.com/lnluckybamboo/p/3953647.html
Copyright © 2020-2023  润新知