第九章作业

1 线程和进程的联系和区别是什么?

联系: 进程是一个执行中的程序,是操作系统对其资源进行分配的基本单位,每一个进程都有自己独立的一块内存空间、一组系统资源,其内部数据和状态都是独立的。线程是隶属于操作系统的概念,是程序执行的单个顺序流程。二者密切相关。
区别: 同类的多个线程共享一块内存空间和一组系统资源,而线程本身的数据通常只有微处理器的寄存器数据,以及一个供程序执行时使用的堆栈。所以系统在产生一个线程,或者在各个线程之间转换时,负担要比进程小得多。

2什么是前台线程,什么是后台线程

main()函数即主函数,是一个前台线程,前台进程是程序中必须执行完成的,而后台线程则是java中所有前台结束后结束,不管有没有完成,后台线程主要用与内存分配等方面。

3创建线程有几种方法?他们之间的区别是什么?

1 直接继承线程Thread类。该方法编写简单,可以直接操作线程。但由于已经继承了Thread类了,就不能再继承其他类了。
2 实现Runnable接口,;当一个类已继承了另一个类时,就只能用实现Runnable接口的方式来创建线程,多个线程可实现类对象的资源共享。

4线程的生命周期有哪些状态?哪些方法可以改变这些状态?

线程的生命状态有 : 创建、可运行(就绪)、运行中、阻塞、死亡
改变线程状态的方法:

线程睡眠:由运行中的状态进入阻塞状态,睡眠时间过后可进入可运行状态

public static void sleep(long millis)throw InterruptedException

暂停线程: 暂停当前线程执行,允许其他线程执行。该线程仍处于可运行状态,不转为阻塞状态

public static void yield()

连接线程:使当前线程暂停执行。如果需要在一个线程中等待,直到另一个线程消失,可以调用join方法。如果当前线程被强行中断,join方法会抛出异常

public final void join()throws InterruptedException//等待线程结束

public final void join(long millis)throws InterruptedException//最多为线程等待millis毫秒

public final void join(long millis,int nanos)throws InterruptedException//最多为线程等待millis毫秒+nanos纳秒

5什么是线程安全?为什么会产生线程安全问题?如何解决线程安全问题?

1 线程安全是多线程编程时的计算机程序代码中的一个概念。在拥有共享数据的多条线程并行执行的程序中,线程安全的代码会通过同步机制保证各个线程都可以正常且正确的执行,不会出现数据污染等意外情况。
2 线程安全出现的原因: 存在两个或两个以上的线程对象共享同一个资源。多线程操作共享资源代码有多个语句
3 如何解决线程安全问题:为了解决线程安全问题,Java引入监视器来保证共享数据操作的同步性。任何对象都可作为一个监视器,关键字synchronized修饰某个对象后,该对象就成为监视器

6什么是线程的同步通信?同步通信又是如何实现的?

两个线程之间的同步通信,需要方法前的synchronized、方法中wait和notify、一个布尔型的变量指示器之间配合来实现

7什么是死锁?

如果多个线程都处于等待状态,彼此需要对方所占用的监视器所有权,就构成死锁。

8如何让某个对象的A方法内的一个代码块和另一个方法B实现同步?

引入notifyAll()方法,

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值