【Java】内部类、File类、线程优先级

简介: 【Java】内部类、File类、线程优先级

@TOC


前言

本文介绍了File类、内部类、以及线程优先级。通过这篇文章,您可以对三个知识有更深入的了解,其中线程优先级讲究概率,也就是即使你的优先级很高,也有可能被优先级低的抢到。线程的优先级属于多线程里面的,多线程在大学Java课程里非常重要,尽管我们当时没有学的很深入,后面的守卫线程都没有学,但是线程优先级是非常基础的一个知识。内部类则可以简化代码,内部类(Inner Class),是 Java 中对类的一种定义方式,是嵌套类的一个分类,即非静态嵌套类(Non-Static Nested Class)。内部类(非静态嵌套类)分为成员内部类、局部内部类和匿名内部类三种。有些知识我们可以不用,但之所以还学习他,就是防止其他人用的时候我们看不懂。所以还是有学习的必要的。


一、内部类

1、内部类,在类中再写一个类,可以调用外部类的私有方法,私有属性

2、静态内部类,在内部类前加关键字static,不能调用外部类的非静态属性、方法

3、局部内部类,写在方法里面(不建议使用)

4、匿名内部类

列代码如下:
内部类只能通过外部类实例化的对象来调用。

public class Demo05 {
    public static void main(String[] args) {
        Demo04 outer = new Demo04(18);
        Demo04.A b = outer.new A();
        b.getAge();
 
//        new Demo04(18);//匿名类
 
    }
}
public class Demo04 {
    private int m_age;
    Demo04(int a)
    {
        m_age = a;
    }
    public class A{
        public void getAge()
        {
            System.out.println(m_age);
        }
    }
}

静态内部类以及局部内部类

public class Demo06 {
    int age;
    static int b;
    public static class B{//静态内部类,无法访问非静态的属性
        public void put(){
            System.out.println(b);
             class C{//局部内部类,写在方法里面的,不建议使用
 
            }
        }
    }
}

二、线程优先级

如果线程没有没有明确优先级的话,系统会默认分配给了一个5的优先级。优先级:从1~10,其他的都是不合法的,优先级越高,代表这个线程先被调用的概率越高,优先级为10的线程,不一定比优先级为5的线程先执行,只是比他先执行的概率高。总结:1、线程优先级高的不一定先执行,只是概率高 2、先设置优先级,再start()

常用方法:

   setPriority(int )设置优先级,填数字1~10之间;或者用系统自带的
    Thread.NORM_PRIORITY(5),Thread.MIN_PRIORITY(1),                      Thread.MAX_PRIORITY(10)
    getPriority() 获取该线程的优先级
    

例子:

public class Demo11 {
    public static void main(String[] args) {
        Test test = new Test();
        Thread thread = new Thread(test);
        Thread thread1 = new Thread(test);
        Thread thread2 = new Thread(test);
        thread2.setPriority(Thread.MIN_PRIORITY);
        thread2.start();
        thread.setPriority(Thread.NORM_PRIORITY);
        thread.start();
        thread1.setPriority(Thread.MAX_PRIORITY);
        thread1.start();
    }
}
class Test implements Runnable{
 
    @Override
    public void run() {
        System.out.println(Thread.currentThread().getName()+"的优先级为"+Thread.currentThread().getPriority());
    }
}

三、File类

Java文件类以抽象的方式代表文件名和目录路径名。该类主要用于文件和目录的创建、文件的查找和文件的删除等。

File对象代表磁盘中实际存在的文件和目录。

常用方法:

1、判断存不存在

    fps.exist();//返回的是Boolean类型,需要用一个Boolean来接受

    2、创建文件

    fps.creatNewFile();//需要处理一下异常

    3、创建单级目录

    fps.mkdir();

    4、创建多级目录

    fps.mkdirs(); //既可以创建单级目录,也可以创建多级目录

    5、获取父文件的路径

    fps.getParent();//返回的是一个字符串类型,需要用一个字符串来接收

    fps.getParentFile();//返回的是文件,包括大小和姓名

    6、获取绝对路径

    fps.getParentFile.getAbstractPath();//获得父文件的绝对路径

    7、获取文件名

    fps.getName()

    8、判断是不是目录

    fps.isDirectory();

    9、判断是不是文件

    fps.isFile();

    10、获取文件最后一次的修改时间

    long time = fps.lastModified(); //返回来的是long类型,而且是时间戳,即从1970.1.1到现在的毫秒数

    11、将时间戳转化为日期

    SimpleDateFormat sdf =new SimpleDateFormat("yyyy-mm-dd HH:mm:ss sss");

    String strTime = sdf.format(time);

    12、获取文件的大小

    fps.length();//返回来的是数值型的,大小是字节

    13、获取当前目录下的所有子路径

    File[] files = fps.listFiles();

    for(File file : files)

    {

    System.out.println(file.getName());
    }
import java.io.File;
 
public class DirList {
    public static void main(String args[]) {
        String dirname = "/java";
        File f1 = new File(dirname);
        if (f1.isDirectory()) {
            System.out.println("Directory of " + dirname);
            String s[] = f1.list();
            for (int i = 0; i < s.length; i++) {
                File f = new File(dirname + "/" + s[i]);
                if (f.isDirectory()) {
                    System.out.println(s[i] + " is a directory");
                } else {
                    System.out.println(s[i] + " is a file");
                }
            }
        } else {
            System.out.println(dirname + " is not a directory");
        }
    }
}

总结

File

一个File对象代表硬盘中实际存在的一个文件或者目录。 无论该路径下是否存在文件或者目录,都不影响File对象的创建

内部类

内部类就是在一个类的内部定义一个类。比如在A中定义了一个B类,那么B类性对于A类来说就称为内部类。而A类相对于B类来说就是外部类了。
1、成员内部类
2、静态内部类
3、局部内部类
4、匿名内部类‘

线程优先级

尽管设置了优先级,但是依然有优先级低的线程在优先级高的线程前面执行,所以优先级低只是意味着获得调度的概率低并不是优先级低就不会被调用,这都是看CPU的调度。

通过本次文章的整理,使得我对四种内部类、File类、优先级的理解进一步加深。深刻的感受到了写博客的重要性,查缺补漏,能够让自己清晰的认识到哪里掌握了,哪里没掌握,就像自己的一个好朋友一样督促自己去更深入的学习,更深入的研究底层,更深入的反复尝试,今天把自己从前的学习历程翻出来记录在CSDN,希望能够帮到各位读者。如果喜欢我的文章,希望您能给我一个一键三连哦。
在这里插入图片描述

相关文章
|
9天前
|
存储 安全 Java
java.util的Collections类
Collections 类位于 java.util 包下,提供了许多有用的对象和方法,来简化java中集合的创建、处理和多线程管理。掌握此类将非常有助于提升开发效率和维护代码的简洁性,同时对于程序的稳定性和安全性有大有帮助。
36 17
|
1天前
|
安全 Java
Java多线程集合类
本文介绍了Java中线程安全的问题及解决方案。通过示例代码展示了使用`CopyOnWriteArrayList`、`CopyOnWriteArraySet`和`ConcurrentHashMap`来解决多线程环境下集合操作的线程安全问题。这些类通过不同的机制确保了线程安全,提高了并发性能。
|
5天前
|
存储 Java 程序员
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
33 4
|
6天前
|
Java 编译器 开发者
Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面
本文探讨了Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面,帮助开发者提高代码质量和程序的健壮性。
13 2
|
10天前
|
存储 安全 Java
如何保证 Java 类文件的安全性?
Java类文件的安全性可以通过多种方式保障,如使用数字签名验证类文件的完整性和来源,利用安全管理器和安全策略限制类文件的权限,以及通过加密技术保护类文件在传输过程中的安全。
|
11天前
|
Java 编译器 Maven
Java“class file contains wrong class”解决
当Java程序运行时出现“class file contains wrong class”错误,通常是因为类文件与预期的类名不匹配。解决方法包括:1. 确保类名和文件名一致;2. 清理并重新编译项目;3. 检查包声明是否正确。
|
14天前
|
存储 Java 编译器
java wrapper是什么类
【10月更文挑战第16天】
20 3
|
6月前
|
存储 安全 Java
深入理解Java并发编程:线程安全与锁机制
【5月更文挑战第31天】在Java并发编程中,线程安全和锁机制是两个核心概念。本文将深入探讨这两个概念,包括它们的定义、实现方式以及在实际开发中的应用。通过对线程安全和锁机制的深入理解,可以帮助我们更好地解决并发编程中的问题,提高程序的性能和稳定性。
|
3月前
|
存储 安全 Java
解锁Java并发编程奥秘:深入剖析Synchronized关键字的同步机制与实现原理,让多线程安全如磐石般稳固!
【8月更文挑战第4天】Java并发编程中,Synchronized关键字是确保多线程环境下数据一致性与线程安全的基础机制。它可通过修饰实例方法、静态方法或代码块来控制对共享资源的独占访问。Synchronized基于Java对象头中的监视器锁实现,通过MonitorEnter/MonitorExit指令管理锁的获取与释放。示例展示了如何使用Synchronized修饰方法以实现线程间的同步,避免数据竞争。掌握其原理对编写高效安全的多线程程序极为关键。
63 1
|
4月前
|
安全 Java 开发者
Java并发编程中的线程安全问题及解决方案探讨
在Java编程中,特别是在并发编程领域,线程安全问题是开发过程中常见且关键的挑战。本文将深入探讨Java中的线程安全性,分析常见的线程安全问题,并介绍相应的解决方案,帮助开发者更好地理解和应对并发环境下的挑战。【7月更文挑战第3天】
89 0
下一篇
无影云桌面