您现在的位置: 首页 > 网站导航收录 > 百科知识百科知识
在学JAVA的时候对io,多线程一知半解,是继续往后学到做项目的时候弄明白呢还是刚开始就要弄懂它们?
多线程,线程,这部在学JAVA的时候对io,多线程一知半解,是继续往后学到做项目的时候弄明白呢还是刚开始就要弄懂它们?
发布时间:2016-12-08加入收藏来源:互联网点击:
在学JAVA的时候对io,多线程一知半解,是继续往后学到做项目的时候弄明白呢还是刚开始就要弄懂它们?
回答于 2019-09-11 08:43:50
回答于 2019-09-11 08:43:50
随着项目的深入,理解程度深入。每过一点时间,主动学习一下。
回答于 2019-09-11 08:43:50
关于这个问题,几乎所有从业者都会以过来人身份建议你:
先把笔试/面试题整明白,把项目中用到的技术学会用,至于 IO 和 线程 可以先放一放,以后不断做项目不断理解。
相信所有从业者都是从这一部分一步一步走过来的,因此建议肯定是有道理的。
但以我们对很多新手在项目中的表现来看,我们还是倾向于先把 IO 和 多线程最基本的东西整明白了再继续向后学习。
另外就是,整明白 IO 和 多线程 跟 做项目 并不冲突,两者可以同时进行。把 IO 和 多线程 整明白了有助于做项目,通过做项目可以加深对 IO 和 多线程 的理解。
以下简单介绍一下我们期望新手能够掌握的 IO 和 多线程 知识 以及 我们建议的学习方法。
1、IO部分
这部分内容相对于多线程来说容易多了,是初学者可以搞明白的。
在 Java IO 部分,我们建议初学者依次序掌握以下内容:
文件( 通过 File 类的实例操作 文件 和 目录 )流 ( 输入流/输出流 、字符流/字节流 、节点流/过滤流 )顺序访问文件和随机访问文件对象序列化和反序列化如果以上内容学习起来比较轻松,建议再依次序学习以下内容:
JDK 1.7 之前的 NIO ( Buffer 、Channel 、 Selector )
JDK 1.7 之后的 NIO ( 这部分比较多,这里不罗列 )
这里与一般图书资料或视频资料建议的学习顺序不太一样,我们建议初学者先学习 File 类,彻底理解 File 实例的含义,理解 文件 和 目录 的区别,理解 文件元数据 和 文件内容 的区别,理解字符编码对文件的影响,然后再学习 IO 部分。
学习 IO 部分也要讲究学习方法,比如学习顺序。
虽然传统 IO 部分涉及的类非常多,但并不是无规律可循,实际上只需要掌握四个类的用法,基本上就可以搞定其它的 IO 类了,这四个类是:
java.io.InputStream
java.io.OutputStream
java.io.Reader
java.io.Writer
以上四个类分别对应了字节输入流、字节输出流、字符输入流、字符输出流。
以其中的 InputStream 为例,该类属于字节流,是所有表示字节输入流的类的父类,掌握这个类的用法,等同于从根本上掌握了字节输入流的用法。另外三个类的地位与 InputStream 类的地位是相同的。
以下以字节流为例展示传统 IO 中字节流的继承体系:
同样在学习完我们建议掌握的传统 IO 知识后,在学习 NIO 时,也可以采用同样的策略,比如学习 Buffer 可以从最顶层的 Buffer类 学起来,学习 Channel 可以从最顶层的 Channel接口 学起。
2、多线程部分
在整个 Java 基础部分,这部分属于偏难的,甚至很多高校讲到这部分后老师都是略过去或者仅讲一下如何创建线程、如何启动线程。
虽然说这部分偏难,有些朋友为了相对深入研究这部分,甚至需要恶补一下操作系统知识,但这仍然不是我们要放弃这部分的理由。
实际上,所有的从业者都知道的,真正从事开发工作后,我们所使用的框架和容器基本上都把多线程部分封装了,果真等到做项目时、等到工作后再去琢磨多线程,恐怕会废掉很多人(很多人恐怕再也不会去琢磨多线程了)。曾经面试过号称有五年工作经验的人,对多线程部分甚至连最基本的知识都不能准确作答。
所以我们建议多线程部分还是要先掌握一些基础知识并在刚开始学习的时候就开始琢磨起来,以后工作了做项目时才会有更深的体会,当然也会通过项目更加加深理解。
这部分我们建议初学者依次序掌握以下内容:
操作系统、程序、进程、线程之间的关系
线程调度方式 ( 协作式/抢占式 ) 、理解并行和并发
创建线程的方法 ( 建议先学 Thread 和 Runnable ,其它先放放 )
线程状态
线程调度 ( priority 、yield 、join 、sleep 、demon )
同步和互斥
线程通信 ( wait / notify)
学习以上内容之后,建议在学习以下内容:
多线程并发
线程通信 (多线程之间有数据传递,不仅是 wait 和 notify )
线程池
因为这部分内容一旦展开就非常非常多,所以,建议初学者在刚开始不要再继续深入研究,到此打住。等到工作两三年后再回来深入研究这部分内容也来得及。
回答于 2019-09-11 08:43:50
Java这一行目前以框架为主,都是封装好的你。你暂时可以不必纠结,应该对工作影响不大。但是从长远考虑必须要学好。io这块Apache有几个工具包,可以多读读相关代码。还有个hutool的工具包对常用操作有封装可以从这方面入手。
回答于 2019-09-11 08:43:50
一个人的见识和年纪没有关心。同样的,不会随着时间你就懂了。既然遇到了,就花时间解决。还有就是不同的知识深度理解的层次不同。自己努力能理解到什么层次就是什么层次。以后随着知识沉淀有会有新的理解
上一篇:哪里可以学习艺术面包?
下一篇:返回列表
相关链接 |
||
网友回复(共有 0 条回复) |