2020-09-01学习总结

2020-09-01学习总结:

1 HashMap 和 HashTable 有什么区别?

HashMap线程不安全,不允许键值重复,允许空键和空值;由于非线程安全,HashMap 的效率要较 HashTable 的效率高.
HashTable线程安全,key和value不能为null; HashTable 是用 sychronize来实现线程安全的;

2 HashMap,HashTable,ConcurrentHashMap 之间的区别,及性能对比

性能:ConcurrentHashMap(线程安全) > HashMap > HashTable(线程安全)
1、HashMap 线程不安全的,HashTable、ConcurrentHashMap 线程安全的。
2、HashMap 的键和值都允许null 值,而HashTable则不行。 HashMap 效率比 HashTable 的要高。
3、Hashtable是同步的,HashMap不是。因此HashMap 更适合于单线程环境,而 Hashtable 适合于多线程环境。但是现在不建议用 HashTable,因为HashTable是遗留类,内部很多没优化。现在有 ConcurrentHashMap 替代。
4、HashTable 是用 Synchronized 关键字修饰,锁机制是一次锁住整个表,同一时刻只能一个线程进行操作,ConcurrentHashMap 是使用了锁分段技术,默认将 hash表分为16个桶,一次锁住一个桶。get、put、remove 等常用操作只锁住当前用到的桶。原来只能一个线程进入,现在可以16个写线程一起执行,性能的提升是显而易见的。

3什么是线程?线程和进程的区别?

进程:具有一定独立功能的程序,是操作系统进行资源分配和调度的一个独立单位。
线程:是进程的一个实体,是 cpu 调度和分派的基本单位,比进程更小的可以独立运行的基本单位。
特点:线程小于进程,这使的多线程程序拥有高并发性,进程在运行时各自内存相互独立,线程之间内存共享,这使多线程编程可以拥有更好的性能和体验

4 创建线程有几种方式

1.继承Thread类
Thread 类本质上是实现了 Runnable 接口的一个实例,代表一个线程的实例。启动线程的唯一方法就是通过Thread类的start()实例方法启动一个新线程,并执行 run()方法。
2.实现 Runnable 接口
3.实现 Callable 接口
Callabled 接口有点儿像是 Runnable 接口的增强版,它以 call()方法作为线程执行体,call()方法比 run()方法功能更强大。 call()方法可以有返回值,可以声明抛出异常类。
4.通过线程池方法
然后调用 execute 方法即可。

拓展

什么是线程池
线程池就是事先将多个线程对象放到一个容器中,当使用的时候就不用 new 线程而是直接去池中拿线程即可,节省了开辟子线程的时间,提高的代码执行效率。
常用的线程池有哪些?
newSingleThreadExecutor:创建一个单线程的线程池,此线程池保证所有任务的执行顺序 按照任务的提交顺序执行。
newFixedThreadPool:创建固定大小的线程池,每次提交一个任务就创建一个线程,直到 线程达到线程池的最大大小。
newCachedThreadPool:创建一个可缓存的线程池,此线程池不会对线程池大小做限制,线 程池大小完全依赖于操作系统(或者说 JVM)能够创建的最大线程大小。
newScheduledThreadPool:创建一个大小无限的线程池,此线程池支持定时以及周期性执 行任务的需求。
newSingleThreadExecutor:创建一个单线程的线程池。此线程池支持定时以及周期性执行 任务的需求

5 线程的基本方法有什么?
线程相关的基本方法有
线程等待(wait)
2.线程睡眠(sleep)
4.线程中断(interrupt)
5.Join 等待其他线程终止 join() 方法,等待其他线程终止,在当前线程中调用一个线程的 join() 方法,则当 前线程转为阻塞状态,回到另一个线程结束,当前线程再由阻塞状态变为就绪状态,等待 cpu 的宠幸.
6.线程唤醒(notify)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值