java面试————搞死这个线程(一)

1.什么是线程?

        线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运行单位。

2.线程与进程?

        线程是进程的子集,一个进程可以有很多线程,每条线程并行执行不同的任务,不同的进程使用不同的内存空间,所有的线程共享一片相同的内存空间。每个线程都拥有单独的栈内存来存储本地数据。

3.实现线程?

        实现Runnable接口,继承Thread类。

4.如果选择实现接口或者继承?

        单继承,你的明白!

5.Java中的Runnable和Callable有什么不同?        

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

6.Java中的CountDownLatch和CyclicBarrier有什么不同?

            前者为减计数方式,后者加计数方式

            前者计算为0时释放所有等待的线程,后者计数达到指定值时释放所有等待线程

            前者计数为0,无法重置,后者计数达到指定值,又置0重新开始

            前者调用countDow()方法计数减1,调用await()方法只进行阻塞,对计数没有任何影响;后者调用await()方法计数加1,若加1后值不等于构造方法的值,则线程阻塞

            前者不可重复利用,后者可以重复利用。

7.java内存模型是什么?

        java内存模型规定和指引java程序在不同的内存架构,CPU和操作系统间有确定性行为。在多线程的情况下尤为重要,java内存模型对一个线程所能做的变动能被其他线程可见提供了保证。

        主要3点:单线程程序,不会有可见性问题。

                        正确的多线程程序,程序的执行结果和该程序在顺序一致性内存模型中的执行结果相同。

                        未同步或未正确同步的多线程,最小安全性,要么读到某个线程写入的值,要么默认值为0.

8.volatile

        只有成员变量才能使用它,volatile可以保证下一个读取操作会在前一个写操作之后发生.

9.Vector

        Vector是用同步方法来实现线程安全

10.java中什么是竞态条件?

        多线程对一些资源的竞争的时候就会产生竞态条件,如果要执行的程序竞争失败排到后面执行了,那么整个程序就会出现一些不确定bugs,这种bug很难发现且会重复出现.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值