本周的知识点是线程和流,线程抽象难懂,学习起来费劲,流相对来说还好点,可以快速理解。
第一天先是对上周的集合有关作业进行讲解,对集合做了完备的回顾。下午对线程进行学习,介绍了进程和线程,并发与并行。以及实现多线程的两种方式,继承Thread和实现Runnable接口。推荐多用接口少用继承。然后学习线程中的常用方法。
第二天接上文继续学习线程方法,说了直接调用run()方法和start()方法的区别,run方法不会开启新的线程,调的都是main线程,只有start才可以。然后学习了线程的状态(创建
状态、就绪状态、运行状态、阻塞状态、死亡状态),最后学习保证数据安全所使用的方式:1、同步方法,使用synchronized关键字修饰的方法2、同步代码块,也是synchronized修饰的代码块,都是为了保证每次只有一个线程访问。然后说了线程安全与非线程安全的对比,Hashtable,Vector,StringBuffer,这些类的源码方法中都使用了synchronized关键字修饰,ArrayList,LinkedList,HashMap,HashSet都不是线程安全的。
第三天讲解了死锁这一因程序本身问题而出现的问题,多个线程同时竞争同一个资源。然后学习了生产者和消费者模式,这是一种思想,用于平衡线程之间的通信。接着学习了
Object类提供的一些方法,wait()方法、notify()方法、notifyAll()方法。最后是Callable接口,为了线程如果需要返回值,可以实现Callable接口,其通过FutureTask类的构造方法来初始化。
第四天学习了可重入锁和可重入读写锁,ReentrantLock是JDK给我们提供的可重入锁,是Lock接口的实现类。ReentrantReadWriteLock属于一个复合锁类,是ReadWriteLock的实现类,包括读锁和写锁。接着学习了Collections工具类提供的线程安全集合,synchronizedList(),
synchronizedSet(),synchronizedMap()集合。JDK提供的线程安全的集合类,CopyOnWriteArrayList(),
CopyOnWriteArraySet(),ConcurrentHashMap()集合。最后简单讲解了队列和线程池。
第五天开始学习了Filel类以及提供的一些方法,都是所见即所得的方法。然后学习了字节流和字符流,字节流父类是InputStream和OutputStream,InputStream的子类是FileInputStream,ObjectOutputStream和DataOutputStream.OutputStream的子类是FileOutputStream,ObjectOutputStream和
DataOutputstream。字符流的父类是Reader和Writer,Reader的子类是BufferedReader和InputStreamReader,Writer的子类是BufferedWriter,OutputStreamWriter和PrintWriter。
第六天学习了数据流和对象流。数据流DataInputStream和DataOutputStream,主要用于写入二进制文件。对象流通过构造方法传一个FileInputStream对象,而不是上面学的文件文本之类的东西。最后是序列化,主要是对象的类必须实现Serializable接口,这个接口只是一个标识,里面无内容,JAVA中的两个标识接口Cloneable,表示实现此接口可以被克隆。
JAVA学习第六周总结
最新推荐文章于 2023-01-15 19:03:19 发布