`

java简介以及了解java(二一)

阅读更多

死锁问题
多线程不释放自己拥有的锁标记,而想申请其他线程拥有的锁标记,就会造成死锁。
没有获得加锁对象的锁标记的线程,不能访问只有获得该对象所标记才能访问的同步方法,但可以访问这个对象的非同步的方
法。
死锁的两种处理方法
统一排列锁顺序(解决不同方法中对多个共享资源的访问)
对象1的方法
synchronized(a)
synchronized(b)
对象2的方法
synchronized(a)
synchronized(b)
java线程间通信(也就是线程间的相互协调)
等待通知机制
线程间通信使用的空间称之为对象的等待对列(wait pool),该队列也是属于对象的空间的。
进入等待池
使用Object类中wait()的方法,在运行状态中,线程调用wait(),此时表示线程将释放自己所有的锁标记和CPU的占用,同
时进入这个对象的等待池。等待池的状态也是阻塞状态,只不过线程释放自己的锁标记。在对该对象加锁的同步代码块里,才
能调用该对象的wait()方法,表示线程将会释放所有锁标记,进入等待队列,线程将进入等待队列状态。
一个线程进入了对一个对象加锁的同步代码块,并对该对象调用了wait()方法,释放自己拥有的所有锁标记,进入该对象等待
队列,另一个线程获得了该对象的锁标记,进入代码块对该对象调用了notify()方法(对该对象调用了notifyAll()方法,会释
放等待队列里所有的线程),对该对象调用方法的线程也不会释放所拥有的锁标记(对自身没有影响),也就是从等待队列里
释放出一线程,释放出的这个线程要继续运行也就还要进入那个同步代码块,因为得不到要访问代码块对象的锁标记,而进入
该对象的锁池,等待所标记释放。
注意:用notifyAll()取代notify(),因为在调用notify()方法时,是由系统决定释放出哪个线程。
退出等待池进入锁池
注意:只能对加锁的资源进行wait()和notify()。
1) wait():交出锁和CPU的占用,进入该对象的、等待队列。
2) notify():从对象的等待队列中释放任意的一个线程。
3) notifyAll(): 从对象等待队列中释放所有线程并放到锁池中。
Java的I/O流与文件
Java中的文件操作
File类(java.io.File)可表示文件或者目录(在JAVA中文件和目录都属于这个类中,而且区分不是非常的明显)。
File下的方法是对磁盘上的文件进行磁盘操作,但是无法读取文件的内容。
注意:File类的对象实施表示一个文件并不是真正的文件,只是代理而已,通过代理来操作文件创建一个文件对象和创建一个
文件在JAVA中是两个不同的概念。前者是在虚拟机中创建了一个文件,但却并没有将它真正地创建到OS的文件系统中,随
着虚拟机的关闭,这个创建的对象也就消失了。而创建一个文件才是在系统中真正地建立一个文件。
例如:
File f=new File(“11.txt”);//创建一个名为11.txt的文件对象
f.CreateNewFile();//真正地创建文件
File类的方法
boolean createNewFile() //创建文件
boolean mkdir() //创建目录
boolean mkdirs() //创建多个目录
boolean delete() //删除文件,删除的是创建File对象时指定与之关联创建的那个文件。
boolean deleteOnExit(); //在JVM进程退出的时候删除文件,这样的操作通常用在临时文件的删除。
String[] List()://返回当前File对象下所以显文件和目录名(相对路径)
File[] ListFiles()://返回当前File对象(必须是目录)所有Files对象,可以用getName()来访问到文件名。
isDirectory()和isFile()//来判断究竟是目录还是文件。
String getParent()//得到父类文件名,只有在构造对象时传入了Parent对象才有。
File getParentFile()//父路径名的抽象路径名,如果没有指定Parent对象,则返回null。
String getPath()//获得相对路径。
exists() //判断文件或文件夹是否存在。
getAbsolutePath() //获得文件的绝对路径
使用File类的实例
例:这个类是实现了删除_desktop.ini文件的功能

import java.io.*;
public class LsitFile {
public static void main(String[] args) throws Exception{
File f=new File("C:\\");
print(f);
}
static void print(File f){
File[] fs=f.listFiles(new MyFilter());
for(int i=0;i<fs.length;i++){
if (fs[i].isFile()){
fs[i].delete();
}
else{
print(fs[i]);
}
}
}
}
class MyFilter implements FileFilter{
public boolean accept(File arg0) {
if (arg0.isDirectory()) return true;
String name=arg0.getName();
if (name.equals("_desktop.ini")) return true;
else return false;
}
}

 

分享到:
评论

相关推荐

    Java 第1章 了解java含源代码

    在“Java 第1章 了解java含源代码”中,我们将会探讨Java的基础知识,包括它的历史、特性、语法以及如何阅读和理解Java源代码。 1. **Java的历史**:Java的诞生源于C++,由James Gosling领导的团队开发,旨在创造一...

    JAVA简介以及语言基础

    Java入门的基础资料,了解Java 语言 ; 了解Java 程序的类型 ; 掌握Java 程序运行环境的配置 ; 理解Java 虚拟机 (JVM); 了解Java的特点

    Java 简介.ppt

    了解Java 语言 了解Java 程序的类型 掌握Java 程序运行环境的配置 理解Java 虚拟机 (JVM) 了解Java的特点

    java源码包---java 源码 大量 实例

     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...

    1-Java简介以及开发环境安装1

    Java简介及开发环境安装 Java是一种广泛使用的高级编程语言,由Sun Microsystems(现为Oracle Corporation的一部分)于1995年发布。它设计的初衷是实现“一次编写,到处运行”的跨平台能力,通过Java虚拟机(JVM)...

    Java(TM) 6 updat 21

    Java(TM) 6 Update 21 是Oracle公司发布的一个针对Java开发环境的重要更新,它主要针对Java SE(标准版)6进行了一系列的性能优化、安全修复以及稳定性改进。这个更新对于初学者和开发者来说,是学习和使用Java编程...

    Core Java学习1(java简介与发展史)

    Java简介与发展史 Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems的詹姆斯·高斯林(James Gosling)在1995年发布。它以其“一次编写,到处运行”(Write Once, Run Anywhere)的理念而闻名,因为它...

    Learn Java in 21 Days

    3. **拥有多年C/C++编程经验的专业人士**:对于这类专业人士而言,了解Java的流行趋势以及它与C/C++之间的异同将非常有价值。 4. **对Web应用开发感兴趣的开发者**:尽管Java在Applet开发方面表现突出,但其在更广泛...

    21天学通java 电子书 pdf格式

    此外,还讲述了Java的历史、现状以及未来发展的趋势,让读者了解Java语言的发展历程和未来方向。 在Java编程基础部分,书中指导读者如何安装Java开发工具包(SDK),编写语句和表达式,并给出了创建和命名变量的...

    Java虚拟机规范.Java SE 8版.zip

    书中基于全新Java SE 8,完整且准确地阐述Java虚拟机规范,是深度了解Java虚拟机和Java语言实现细节的必读之作。 《Java核心技术系列:Java虚拟机规范(Java SE 8版)》共分7章。第1章从宏观的角度介绍了Java虚拟机...

    java核心技术卷二

    由于【部分内容】提供的文字信息杂乱无章,包含了大量无意义的字符组合和重复的文字片段,这表明它很可能是一段经过OCR扫描技术处理后生成的文本,由于扫描技术的局限性,这些文字可能来自于一些无法辨识或不相关的...

    java语言简介

    程序设计语言 了解Java平台特性 了解Java集成开发环境 使用Eclipse开发Java应用 了解Java程序结构组成 常见问题

    14.java集合转换(了解).zip

    14.java集合转换(了解).zip14.java集合转换(了解).zip14.java集合转换(了解).zip14.java集合转换(了解).zip14.java集合转换(了解).zip14.java集合转换(了解).zip14.java集合转换(了解).zip14.java集合...

    Java 汇总学习简介

    Java 汇总学习简介 Java 作为一种广泛使用的高级编程语言,其学习涵盖了许多方面。在深入探讨之前,我们先来了解一下 Java 的基本课程,包括 SL110、SL275 和 SL285,这些课程通常由 SUN 公司提供,旨在帮助初学者...

    国二java考试系统

    2. **题库丰富**:系统内置了大量的历年真题和模拟题,覆盖了Java二级考试的所有知识点,让考生全面复习。 3. **自动评分**:完成模拟试题后,系统会立即给出分数和解析,帮助考生了解自己的薄弱环节。 4. **错题...

    Java面试题合集最新版2024.zip

    Java面试通常涵盖多个...并发编程:了解Java中的线程、同步、锁等机制,以及Java并发包中的工具类。 JVM与性能调优:对Java虚拟机(JVM)有一定了解,包括内存管理、垃圾回收等方面,并知道如何进行基本的性能调优。

    21天学通java英文版(pdf格式)

    "21天学通Java英文版"是一本旨在帮助初学者在短时间内掌握Java核心技术的教程。通过21天的学习计划,这本书将引导读者从基础语法到高级特性,逐步深入Java的世界。 在21天的学习过程中,你将首先接触到Java的基础...

    JAva资源网站大全

    这里不仅有Java基础知识的详细介绍,还有高级特性的深入解析,是Java开发者深入了解Java内部机制的首选之地。 ### 2. CN-Java 网址:http://www.cn-java.com/ CN-Java是一个专注于Java技术的中文社区,提供了丰富...

    JAVA入门教程21天学通JAVA2第三版

    对于希望从事Web开发的人来说,《Java Server Pages》是一本很好的入门书籍,而对于希望了解EJB的企业级开发者,《Enterprise JavaBeans, 2nd Edition》则是非常实用的选择。通过这些书籍的学习,结合实践操作,将有...

    21天学通Java.第7版-中文版-良心积分价

    16. **Java EE应用**:了解Java企业级应用开发,如Servlet、JSP、JPA(Java Persistence API)、EJB(Enterprise JavaBeans)等技术,以及Spring框架和Maven构建工具。 17. **单元测试**:学习使用JUnit进行单元...

Global site tag (gtag.js) - Google Analytics