当前位置:网站首页 > Java高级 > 正文

JAVA高级特性总结_java的高级特性

1.File类可以完成对文件、目录的操作,新建、删除、重命名文件、目录等,但不能访问文件本身的内容,访问文件本身内容需要使用输入输出流,对于Java来说文件和目录都是一个概念。

2.Window的路径分隔符使用反斜线(\),而Java的程序中反斜线表示转义字符,所以如果要使用反斜线应该用两条线(\\),或者只是用正斜线(/)。

3.字节流一InputStream和OutStream作为基类,字节流的最小数据单元是8位,字符流的最小 数据单元是16位,字符流则以Reader和Writer作为基类。

4.使用处理流的一个明显好处是:只要使用相同的处理流,程序就可以采用完全相同的输入输出代码来访问不同数据源,随处理流包装节点流的改变,程序实际所访问的数据源也相应发生改变。这是一种典型的装饰器设计模式。

5.使用Java的IO流执行输出时,必须要关闭输出流,以保证程序正常。

6.由于PrintStream类的输出功能非常强大,通常如果我们要输出文本内容,应该使用处理流PrintStream来包装OutStream后进行输出。包装方法:

//创建字节流

FileOutStream fos=new FileOutputStream(“t.txt”);

//进行包装

Ps=new PrintStream(fos);

7.字节流、字符流的使用规则:如果输入输出的内容是文本内容使用字符流,如果进行输入输出二进制内容使用字符流。

8.InputStream和Reader都为抽象类,本身不能创建实例,但是它们分出有一个用于读取文件的输入流:FileInputStream和FileReader。

9.线程实现的两种方式:第一种是继承Thread类,重写其run方法。第二种是实现Runnable接口,实现run方法。

10.我们将希望的线程执行的代码放在run方法里,通过start的方法来启动线程,start方法首先为系统准备好资源,然后在调用run方法。当某个类继承了Thread类,那么就叫做线程类。

11.线程的停止是不可以使用stop方法的,一般设置一个变量,在run方法中时一个循环,每次检查这个变量,如果满足条件继续执行,否则停止线程。

12.Java中的每一个线程都有一个锁(lock)或监视器(monitor),当访问某个对象的synchronized方法时,表示对该对象上锁,任何其他线程都无法访问该对象的synchronized方法,直到这个线程执行完毕后,或者抛出异常后,表示对该对象释放锁,其他对象才可以访问该对象的synchronized方法。

13.如果某个synchronized方法是static的,那么线程在访问方法时,它锁的并不是synchronized方法所在的对象,而是synchronized方法所在对象所对应的class对象,因为无论一个类有多少个对象,这些对象会对应唯一一个class对象,因此当线程分别访问同一个类的两个对象的两个static,synchronized方法时,他们的执行也是顺序的,也就是说一个线程先执行方法,执行完毕后另一个线程才开始执行。

14.synchronized块:写法:

synchronized(object){

 

}表示在执行的时候对object对象上锁。

15.synchronized方法是一种粗粒度的并发控制,某一时刻,只能有一个线程执行该synchronized方法,synchronized块则是一种细粒度的并发控制,只会将块中的代码同步,位于方法内、synchronized块之外的代码是可以被多个线程同时访问的。Synchronized里的数据必须是private类型的。

16.在项目中使用synchronized有时候是存在问题的,如果这个项目比较耗时,项目中涉及算法并且存在并发问题,那么当一个线程在执行时,其他线程就必须等待,一个线程执行的时间较长;比如20秒,那么下一个线程就得等待20秒,再下一个就得等待40秒,以此类推,最后一个线程会等待很久。这时就需要使用wait()和notify()方法这两个方法必须都在synchronized修饰的方法里同时使用。

17.wait和notify方法都是定义在Object类里的,Object类里的各个方法都是非常有用的,而且这两个方法都是final的,所以可以被所以的java类继承,但是无法重写,这两个方法在使用线程应该已经获得了对象的锁,因此对这两个方法的调用要放在synchronized方法或块中,当线程执行wait方法时,它会释放掉对象的锁

18.   另一个会使线程等待的方法是sleep方法,它会导致线程睡眠指定的毫秒数,但是线程在睡眠的过程中是不会释放对象的锁的。

到此这篇JAVA高级特性总结_java的高级特性的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • JavaSE目录_java获取当前目录路径2024-10-30 16:43:44
  • 耗时一个月我问遍了身边的大佬,零基础自学Java的路线,适用程序员入门&进阶,Java学习路线,2024新版_零基础学java有多难2024-10-30 16:43:44
  • java 高级for循环_java高级for循环2024-10-30 16:43:44
  • java爱心效果代码来了_java爱心图案2024-10-30 16:43:44
  • Java 高级面试问题及答案_java 高级面试问题及答案解析2024-10-30 16:43:44
  • MyBatis从入门到精通_mybatis入门教程2024-10-30 16:43:44
  • 【Java全栈学习路线】最全的Java学习路线及知识清单,Java自学方向指引_【Java全栈学习路线】最全的Java学习路线及知识清单,Java自学方向指引2024-10-30 16:43:44
  • JDK环境变量配置_Linux设置jdk环境变量配置2024-10-30 16:43:44
  • Java面试指南:突破面试难关,成为优秀程序员的必备利器!_java面试进阶指南2024-10-30 16:43:44
  • Eclipse安装教程 ——最详细安装java_eclipse安装教程20212024-10-30 16:43:44
  • 全屏图片