多线程习题总结

本文总结了多线程的相关知识点,包括线程安全、HashMap、HashTable与ConcurrentHashMap的异同、进程与线程的区别、start()与run()、sleep()、yield()和join()方法的使用、ReentrantLock与synchronized的区别、Future与FutureTask的对比,以及多线程编程中的火车站售票问题和哲学家就餐问题的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、保证线程安全:HashTable,synchronized;注意:单例模式有多种实现方式,有的实现方式是线程不安全的;volatile关键字不能保证线程安全,只能保证内存可见性和有序性,不能保证原子性。

2、HashMap,HashTable,ConcurrentHashMap的异同点

同:

(1)继承结构而言,三者都是继承Map接口的;

(2)存储的内容都是以键值对的形式存储;

异:

(1)线程安全,HashMap不是线程安全的,HashTable和ConcurrentHashMap都是线程安全的;

(2)null值处理,HashMap的key-value都可以为null,HashTable和ConcurrentHashMap的key-value都不能为null;

(3)数据结构,HashMap和HashTable底层都是数组+链表,ConcurrentHashMap底层是数组,数组内部是数组+链表的形式;

(4)初始默认值,HashMap和ConcurrentHashMap数组初始大小为16,HashTable数组初始大小为11;

(5)增长方式,HashMap和ConcurrentHashMap都是2倍扩容,HashTable是2倍+1扩容;

(6)hash计算方法,HashTable和ConcurrentHashMap直接使用key的hashcode值,而hashMap对key的hash值重新计算;

3、进程与线程的区别

(1)定义,进程是资源分配的最小单位,线程是资源调度的最小单位;

(2)对应关系,一个进程可以包含多个线程;

(3)健壮性,进程之间相互隔离,一个进程崩溃不会影响其他进程,一般多个线程共享资源,一个线程崩溃可能导致其他线程崩溃;

4、start()与run()方法的区别

(1)start()方法是真正启动线程,而调用run()方法是普通方法调用 ;

(2)start()方法不能重复调用,run()方法可以重复调用;

(3)start()方法可以中断

5、sleep(),yield(),join()方法的区别

(1)方法作用不同,sleep()方法作用是让线程睡眠给定时间,暂停执行;;调用yield()方法作用让步作用,调用join()方法是等待作用,父线程中,子线程调用该方法,使子线程执行结束后父线程才执行;

(2)线程状态转换不同,调用sleep()方法,线程状态由RUNNING到TIMED_WAITING;调用yield()线程状态由RUNNING到RUNNABLE;调用join()方法线程状态由RUNNING到BLOCKED;

(3)sleep()方法和yield()方法是Thread的静态方法,而join()是实例方法(Object.join())

6、ReentrantLock与synchronized的区别

(1)使用上不同,synchronized有三种使用方式(静态方法,一般方法,代码块),ReentrantLock使用是显性加锁和解锁;

(2)synchronized不能实现公平锁,ReentrantLock公平锁和非公平锁都可以实现;

(3)ReentrantLock可以中断,而synchronized不能中断;

(4)ReentrantLock提供了条件变量condition的构造方法newCondition();

(5)ReentrantLock有一个独有的方法tryLock(),只有当锁无线程占用时,才会获取锁;

7、Future与FutureTask的区别

该问题是在线程池的源码中涉及的,

(1)Future是一个接口,代表可以取消的任务,且可以获得任务的执行结果,而FutureTask实现了Fut

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值