多线程的热点问题

什么是线程:
线程是操作系统能够进行运行算调度的最小单位,它被包含在进程之中,是进程中的实际运作的单位
线程和进程的区别:
线程是进程的子集,一个进程拥有很多线程,每个线程执行不同的任务。但不同的进程使用不同的内存空间,而所有的线程共享一片相同的内存空间。每个线程都拥有单独的栈内存来存储本地数据。
如何在java中实现线程
java.lang.Thread类的实例就是一个线程但是它需要调用java.lang.Runnable接口来执行,由于线程类本省就是调动的Runnable接口,所以你可以继承Thread类或者直接调用Runnable接口来重写run()方法实现线程。
选用哪个方法比较好呢
因为java不支持类的多重继承,但允许你调用多个接口,所以如果你要继承其他类,当然调用Runnable接口。
Thread类中的run()和start()方法的区别
start()方法用来启动新创建的线程,而且start()方法的内部调用了run()方法,这和直接调用run()方法的效果不一样。当调用run()方法的时候,只会是在原来的线程中调用,没有新的线程启动,start()方法才是启动线程。
java中Runnable和Callable有什么不同
两者都代表在不同线程中执行的任务,Runnable在JDK1.0开始就有了,而CallablezaiJDK1.5增加的,他们的主要区别就是Callable的call()方法可以返回值和抛出异常,而Runnnalbe的run()方法没有这些功能,callable可以放回装载有计算结果的Future对象。
java中的volatile变量是什么
这是一个特殊的修饰符,只有成员变量才能使用它,在java并发程序缺少同步类的情况下,多线程对成员变量的操作对其它线程是透明的,这个修饰符可以保证下一次读取操作会在前一个写操作之后发生。
什么是线程安全
在多个线程在同时运行时,可能会同时访问一段代码,如果每次远行的结构和单线程运行的结果是一样的,而且其他变量的值也和预期的是一样的,就是线程安全。
一个线程在运行时发生异常会怎么样
如果这个异常没有捕获的话这是线程将会停止执行。
Thread.UncaughtExceptionHandler是用来处理未捕获异常造成线程土壤终端情况的一个内嵌接口,当一个未捕获异常造成线程中断的时候JVM会使用 Thread.getUncaughtExceptionHandler()来查询超线程的UncaughtExceptionHandler并将线程和异常作为参数传递给handler的UncaughtExceptionHandler方法进行处理。
java中notify和ntifyall有什么区别
notify()方法不能唤醒某个具体的线程,所以只有一个线程在等待的时候才起作用,而notifyall()能唤醒所有线程并允许他们争夺锁确保了至少有一个线程能继续运行。
为什么wait, notify 和 notifyAll这些方法不在thread类里面?
因为java提供的锁是对象级的而不是线程级的,每个对象都有锁,通过线程获得。如果线程需要等待某些锁那么调用对象中的wait()方法就有意义了,如果wait()方法定义在Thread类中,线程正在等待的是哪个所就不明显了,简单来说,由于wat,notify,notifyall都是锁级别的操作,所以把他们定义在Object类中是因为锁属于对象。
java中的栈和堆有什么不同
因为栈是一块和线程紧密相关的内存区域,每个线程都有自己的栈内存,用于存储本地变量,方法参数和栈调用,一个线程中存储的变量对其它线程是不可见的。而堆是所有线程共享的一片公共的内存区域,对象都在堆里创建,为了提升效率线程会从对重弄一个缓存到自己的栈,如果多个线程使用该变量就可能引发问题,这时候volatile变量就可以发挥作用了,他要求线程从驻村中读取变量的值。
什么是线程池,为什么要使用线程池
创建线程要花费昂贵的资源和时间,如果任务来了才创建线程那么相应时间会变长,而且一个进程能创建的线程数有限,为了避免这些问题在程序启动的时候就创建若干县城来响应处理,这就是所谓的线程池。里面的下城教工作线程。从JDK1.5开始,java API提供了Executor框架让你可以创建不同的线程池,比如单线程池,每次处理一个任务,数目固定的线程池或者是缓存线程池。
单例模式的双检索:
这是一个用来创建线程安全的单例老方法,当单例实例第一次被创建时它试图用单个锁进行性能优化,但是由于太过于复杂在Jdk1.4中它是失败的

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值