概述
1.简述进程和线程的联系和区别。
(1)资源分配&处理器调度:进程是资源分配的基本单位,线程是处理器调度的基本单位。
(2)地址空间:进程拥有独立的地址空间;线程没有独立的地址空间,同一进程内多个线程共享其资源。
(3)划分尺度:线程更小,所以多线程程序并发性更高。
(4)执行:一个程序至少有一个进程,一个进程至少有一个线程。
2.创建线程的两种方式分别是什么?各有什么优缺点。
第一种方式:继承Thread类
实现步骤:
1.自定义类继承Thread
2.覆盖Thread中的run()方法
3.创建该类的对象,调用start()方法,开启线程并调用run方法
采用继承Thread类方式:
(1)优点:编写简单,如果需要访问当前线程,无需使用Thread.currentThread()方法,直接使用this,即可获得当前线程。
(2)缺点:因为线程类已经继承了Thread类,所以不能再继承其他的父类。
第二种方式:实现Runnable接口
实现步骤:
1.定义一个实现Runnable接口的类
2.覆盖run方法
3.创建该类对象,并以该类对象为参数创建Thread类的对象,从而创建了一个线程
4.调用start方法,开启线程并调用run方法。
采用实现Runnable接口方式:
(1)优点:线程类只是实现了Runable接口,还可以继承其他的类。在这种方式下,可以多个线程共享同一个目标对象,所以非常适合多个相 同线程来处理同一份资源的情况,从而可以将CPU代码和数据分开,形成清晰的模型,较好地体现了面向对象的思想。
(2)缺点:编程稍微复杂,如果需要访问当前线程,必须使用Thread.currentThread()方法。
3.请你简述sleep( )和wait( )有什么区别?
1.sleep()方法是使线程停止一段时间的方法。在sleep时间间隔期满后,线程不一定立即恢复执行。这是因为在那个时刻,其他线程可能正在运行而且没有被调度为放弃执行。
2.wait()是线程交互时,如果线程对一个同步对象发出一个wait()调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。
4.Java中实现线程通信的三个方法及其作用。
- wait():导致当前线程等待,直到其他线程调用该同步监视器的notify()方法或notifyAll()方法来唤醒该线程。
- notify():唤醒在此同步监视器上等待的单个线程。
- notifyAll():唤醒在此同步监视器上等待的所有线程。
最后
以上就是忐忑店员为你收集整理的Java中的多线程-简答题的全部内容,希望文章能够帮你解决Java中的多线程-简答题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复