2021-7-22学习总结

上午9点~中午12点

学习Java,补充看视频多线程漏掉的知识
1,进程:就是一个程序进行内存运行时, 变成一个进程
2,线程:进程的组成部分,就是进程时分成的许多小任务
3,Runable和Callable,前者具有的功能,后者都有,后者的方法,call()方法可以有返回值,且可以声明-抛出异常,
4,线程死亡的标志,run()或者call()执行完成
5,wait()与sleep()的区别:

  • sleep()方法是Thread类中方法,而wait()方法是Object类中的方法。
  • sleep()方法导致了程序暂停执行指定的时间,让出cpu该其他线程,但是他的监控状态依然保持着,当指定的时间到了又会自动恢复运行状态,在调用sleep()方法的过程中,线程不会释放对象锁。而当调用wait()方法的时候,线程会放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象调用notify()方法后本线程才进入对象锁定池准备。

6,join()方法Thread类提供,让一个线程等待另一个线程的完成的方法,当在某个程序执行流中调用其他线程的方法时,调用线程将会被阻塞
7,线程安全:线程安全就是多线程访问同一代码,不会产生不确定的结果
8,使线程安全:

  • 对非安全的代码进行加锁控制
  • 使用线程安全的类
  • 多线程并发情况下,线程共享的变量改为方法级的局部变量

9,死锁:死锁是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。就是它们都在等对方释放同步监视器
10,解决死锁的方法:

  • 避免多次锁定,尽量避免同一个线程对多个同步监视器进行锁定
  • 具有相同的加锁顺序
  • 使用定时锁
  • 死锁检测

11,线程池:有效的控制系统中并发线程的数量,线程run()或call()结束后,该线程并不会死亡,而是返回线程池中成为空闲状态

下午答辩

思考补充漏掉的知识点
1,JDK:
JDK主要包含三部分:

  • 第一部分就是Java运行时环境,JVM
  • 第二部分就是Java的基础类库,这个类库的数量还是非常可观的
  • 第三部分就是Java的开发工具,它们都是辅助你更好的使用Java的利器

2,JRE:运行环境
3,关系:
2021-7-22学习总结
4,Collection与Collections的区别:

  • Collection:是集合类的上层接口。本身是一个Interface,里面包含了一些集合的基本操作Collection接口时Set接口和List接口的父接口
  • Collections: Collections是一个集合框架的帮助类,里面包含一些对集合的排序,搜索以及序列化的操作

5,将数组转化为List:

  • Arrays.asList(strArray) 方式:将数组转换List后,不能对List增删,只能查改,否 则抛异常。此时是java.util.Arrays.ArrayList 这里面有java.util.Arrays里面的内部类,里面没有重写增删方法,就会调用父类的AbstractList,可以看到父类的增删方法,就会报错,即使调用iterator也会报错
  • ArrayList的构造器
    将Arrays.asList(strArray)的返回值由java.util.Arrays.ArrayList 转为java.util.ArrayList
  • 集合工具类Collections.addAll()方法
    通过Collections.addAll(arrayList, strArray)方式转换,根据数组的长度创建一个长度相同的List,然后通过Collections.addAll()方法,将数组中的元素转为二进制,然后添加到List中,这是最高效的方法。
上一篇:【完虐算法】「字符串-异位词」复盘总结


下一篇:Java集合框架-Collections工具类、集合框架总结