线程基础部分

1.图示

image.png

2.基础知识题目
(1)、什么是线程?
线程是操作系统进行调度的最小单位,也是进程的实际运作单位。(再多处理器编程下,可以使用多线程处理密集型任务)

(2)、线程? 进程?
一个进程可以有多个线程。不同的进程使用不同的计算机内存空间,但是所有的进程共享相同的内存空间, 每个线程都有单独的栈内存来存储本地数据。

(3)、java中咋创建一个线程?
java.lang.Thread类的实例就是一个线程,但是需要通过java.lang.Runnable接口来执行。

(4)、继承Thread类,与实现Runnable两种创建线程方式那种更好?
提示:java不同与C++是不支持多重继承的,但是可以多
重实现接口。

(5)、Thread类中的start、run方法区别?
java线程模型->start()是用来启动新创建的线程的,start在内部调用了run方法,但是直接调用run是在原来的线程(run用来重写)中调用,并不是在新建的线程中调用的

(6)、java中Runnable与Callable有什么不同?
Runnable是在JDK1.0出现的,而Callable是在JDK1.5添加的。主要区别就是Callable的call方法可以返回值和抛出异常,而Runnable的run方法则不可以。Callable可以返回装载有计算结果的Future对象。

*(7)、CyclicBarrier与CountDownLatch?
都可以用来让一组线程等待其他线程。CountdownLatch不能重新使用。

*(8)、java内存模型?
这个暂时讲不清,待补充...

(9)、volatile变量?
首先volatile只能声明在局部变量上。其次此变量会对所有的线程保持可见性(原子性,可见性,有序性),也就是当一个线程修改了这个变量的值,volatile保证了新的值能立即同步到主内存。还有一个是volatile禁止了指令重排序,通过设置内存屏障指令保证处理器不发生乱序执行的行为。

(10)、指令重排序?
通俗地讲就是 程序执行并不一定会按照代码顺序来执行

(11)、竞态条件?
竞态条件是并发的时候多个线程竞争一个资源就可能产生。线程的执行顺序可能跟时序不符,然后就可能会产生一些预期之外的bug.

(12)、java中如何停止一个线程?
可以使用volatile布尔变量退出

(13)、一个线程运行时发生异常会怎样?
① 如果该异常被捕获或抛出,则程序继续运行。
② 如果异常没有被捕获该线程将会停止执行。
Thread.UncaughtExceptionHandler是用于处理未捕获异常造成线程突然中断情况的一个内嵌接口。当一个未捕获异常将造成线程中断的时候JVM会使用Thread.getUncaughtExceptionHandler()来查询线程的UncaughtExceptionHandler,并将线程和异常作为参数传递给handler的uncaughtException()方法进行处理。

(14)、如何在两个线程之间共享数据?
共享对象 、使用阻塞队列这样并发的数据结构

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 进程和线程 进程 所有运行中的任务通常对应一个进程,当一个程序进入内存运行时,即变成一个进程.进程是处于运行过程中...
    胜浩_ae28阅读 10,574评论 0 23
  • 一:java概述: 1,JDK:Java Development Kit,java的开发和运行环境,java的开发...
    慕容小伟阅读 5,845评论 0 10
  • 单任务 单任务的特点是排队执行,也就是同步,就像再cmd输入一条命令后,必须等待这条命令执行完才可以执行下一条命令...
    Steven1997阅读 5,017评论 0 6
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 33,686评论 18 399
  • 事情的起因是想学别人做一个晨间笔记的模板,最后也没有做成功。直接从别人那里copy了一份,研究了一下,终于搞明白了...
    robotor阅读 10,670评论 0 0

友情链接更多精彩内容