Chapter 3 Java Threads

本文深入探讨了Java中的线程概念,包括进程与线程的区别、创建线程的方法、线程的状态、同步机制、死锁等问题,并提供了实用的建议。

Java Thread

3.1 进程和线程的区别是什么?
进程是程序的执行,线程是进程中单独的一个执行序列。进程可以包括多个线程。线程有时候被称为轻量级的进程。
3.2 解释创建线程的不同方法。哪一种是你常用的并解释原因
创建线程有三种方法:
一个类可以即成Thread类
一个类可以实现Runnable接口
一个应用可以使用Executor框架创建线程池

Runnable接口是更推荐的,因为不需要一个对象继承Thread类。如果你的应用需要很多继承,可以使用接口来实现目的。线程池使用和实现起来也非常方便。

3.3 概述可用线程状态
在执行过程中,一个线程具备以下不同的状态:
• Runnable: 线程可运行,但是不必是立即运行
• Running: 处理器正在执行线程代码
• Waiting: 线程阻塞并等待外部处理完成
• Sleeping: 线程被强制休眠
• Blocked on I/O: 等待I/O操作完成
• Blocked on Synchronization: 等待同步锁
• Dead: 线程完成执行

3.4 同步方法和同步块的区别是什么
在java程序中,每个对象都有一个锁。使用synchronized关键字时,线程需要得到对象的锁。synchronized关键字可以被用于方法级(粗粒度的锁)或者代码块级(细粒度的锁)

3.5 在监视器中线程同步如何发生?你可以列举那些不同级别的同步?
jvm在监视器中使用锁避免冲突。监视器一般观察一系列的同步代码,并且保证同意时间直邮一个线程执行同步代码块。每个监视器和一个对象引用相关。线程没有获得锁的之前不被允许执行代码块。

3.6 死锁时什么?
在继续执行前,两个进程互相等待对方的完成,称为死锁。结果就是两个进程持续的等待。

3.7 如何保证n个线程使用n个资源,并不产生死锁?
保证每个线程都按建立的秩序使用锁,可以简单的避免死锁。因此,如果所有的线程加锁或解锁按照同样的顺序,就不会发生死锁。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值