2020-09-01学习总结

本文详细解析了Java中的线程与并发概念,包括HashMap、HashTable和ConcurrentHashMap的区别,线程的基本方法,以及创建线程的多种方式。同时,深入探讨了线程与进程的区别,线程池的原理及其常见类型。

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)

> # 查看每列的数据类型 > str(df) tibble [12,299 × 37] (S3: tbl_df/tbl/data.frame) $ ...1 : num [1:12299] 0 1 2 3 4 5 6 7 8 9 ... $ STATION : chr [1:12299] "00841599999" "01001099999" "01001499999" "01002099999" ... $ NAME : chr [1:12299] "XM21" "JAN MAYEN NOR NAVY, NO" "SORSTOKKEN, NO" "VERLEGENHUKEN, NO" ... $ LATITUDE : num [1:12299] NA 70.9 59.8 80 77 ... $ LONGITUDE : num [1:12299] NA -8.67 5.34 16.25 15.5 ... $ ELEVATION : num [1:12299] NA 9 48.8 8 12 ... $ 2020-01-01: num [1:12299] NA 18.3 17 19.6 25.6 16.1 18.7 17 14.8 28.9 ... $ 2020-01-02: num [1:12299] NA 42.6 33.7 22.6 36.5 9.4 22.6 20.9 11.7 36.7 ... $ 2020-01-03: num [1:12299] NA 61.9 28.7 31.1 33.3 22.8 22.4 26.3 23.3 23.7 ... $ 2020-01-04: num [1:12299] NA 24.6 NA 33.7 8.9 38.2 16.7 21.1 26.7 42.2 ... $ 2020-01-05: num [1:12299] NA 23.9 19.3 18.5 12.2 17.6 5.2 12.4 21.9 29.4 ... $ 2020-01-06: num [1:12299] NA 24.8 26.7 31.5 47.2 7.6 10.4 21.1 9.8 23.3 ... $ 2020-01-07: num [1:12299] NA 29.3 30 62.4 55.6 27.6 64.8 50.6 34.4 28.2 ... $ 2020-01-08: num [1:12299] NA 40.7 28 68.3 39.8 52.2 40.4 44.1 59.8 34.4 ... $ 2020-01-09: num [1:12299] NA 24.1 11.3 56.5 48.2 44.6 41.1 51.5 46.5 57.2 ... $ 2020-01-10: num [1:12299] NA 18.5 9.4 33.9 44.6 16.1 22 36.7 20.2 26.1 ... $ 2020-01-11: num [1:12299] NA 52.6 NA 17.4 39.6 4.1 9.1 22.4 8.1 29.3 ... $ 2020-01-12: num [1:12299] NA 53.7 15.4 16.3 40.7 3.5 11.5 21.7 5.7 29.4 ... $ 2020-01-13: num [1:12299] NA 57.2 22.2 25.4 18.7 9.6 11.1 13.3 12 29.8 ... $ 2020-01-14: num [1:12299] NA 52 24.3 34.3 9.6 19.8 5.4 12.4 34.4 22 ... $ 2020-01-15: num [1:12299] NA 61.1 24.8 26.1 10.6 14.8 5.4 6.9 25.4 10.4 ... $ 2020-01-16: num [1:12299] NA 38.7 21.1 38.7 7 25.9 6.5 9.4 38.2 14.6 ... $ 2020-01-17: num [1:12299] NA 42.2 19.4 18.5 12.8 17.6 6.3 8.7 NA 33.2 ... $ 2020-01-18: num [1:12299] NA 30.4 NA 32 10.2 31.3 9.4 16.3 NA 22.4 ... $ 2020-01-19: num [1:12299] NA 32.8 14.3 37.8 23 26.3 24.1 25.6 NA 23.3 ... $ 2020-01-20: num [1:12299] NA 40.2 15 25.7 27.2 23.9 9.8 22.4 27.8 38 ... $ 2020-01-21: num [1:12299] NA 32.6 12.6 33 32.6 25.7 18 27.2 21.7 35.7 ... $ 2020-01-22: num [1:12299] NA 27.8 6.7 19.3 14.1 26.7 6.1 14.6 NA 27.2 ... $ 2020-01-23: num [1:12299] NA 33.2 16.1 52.4 51.1 8.7 36.3 42.4 NA 32 ... $ 2020-01-24: num [1:12299] NA 29.1 11.9 37.6 59.3 19.8 33 50.6 NA 18.5 ... $ 2020-01-25: num [1:12299] NA 22.6 NA 21.3 32.6 10 8.5 21.1 NA 33 ... $ 2020-01-26: num [1:12299] NA 56.9 24.8 16.9 10.2 10.7 8.1 8.5 NA 38.3 ... $ 2020-01-27: num [1:12299] NA 38.7 14.3 35.2 9.3 23.3 8.1 4.8 NA 35 ... $ 2020-01-28: num [1:12299] NA 20.7 9.1 31.3 21.9 20.9 15.7 4.1 NA 34.8 ... $ 2020-01-29: num [1:12299] NA 10.7 10 20.6 30.2 25.4 38 25 35.9 34.3 ... $ 2020-01-30: num [1:12299] NA 21.1 19.1 19.6 25.6 27.8 26.9 21.1 NA 33.3 ... $ 2020-01-31: num [1:12299] NA 35.7 19.1 19.6 14.1 21.7 10.7 4.4 NA 36.9 ...将 $ STATION 与$ NAME由 chr转为num,给我代码
10-29
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值