Java基础-高级特性-简单总结(注解和多线程)

本文介绍了Java的注解,包括内建注解、元注解和自定义注解,以及注解的使用场景。接着,文章探讨了线程相关知识,包括进程与线程的关系、多线程优势、线程类、线程状态以及线程同步和死锁的概念。此外,还提及了Java中解决线程同步问题的synchronized关键字和线程通信的wait、notify、notifyAll方法。
摘要由CSDN通过智能技术生成

注解:

    Java注解也就是Annotation,是Java里的特殊标记,它为Java程序代码提供了一种形式化的方法,用来表达代码本身无法表示的额外的信息。语法:@Annotation

    使用注解语法有以下几点规范:

        将注解置于所有修饰符之前。

        通常将注解单独放置在一行。

        默认情况下,注解可用于修饰任意程序元素,包括类、方法和成员变量等。

    根据使用方法和用途,可将注解分为三类:内建注解、元注解和自定义注解。

    内建注解:

        @Override、@Deprecated以及@SuppressWarnings

        @Override注解用来标注方法,表示该方法时重写父类的某方法。

public interface Person {
    void Override();
}
public class Student implements Person{
   @Override
    public void Override() {
    }
}

    @Deprecated注解标识程序元素已过时,如果程序元素被此注解修饰,编译器将不再鼓励使用这个被标注的程序元素,如果使用,编译器会在程序元素画一条斜线。下面的代码如果没有显示斜线效果,可以手打到程序中试一试。

 @Deprecated
    public Student(int age, String name) {
        this.age = age;
        this.name = name;
    }
Student stu=new Student(18,"张三");

        @SuppressWarnings注解标识阻止编译器警告,被用于有选择地关闭编译器对类、方法和成员变量等程序元素及其子元素的警告。

             @SuppressWarnings参数:

                deprecation:使用了过时的程序元素。

                unchecked:执行了未检查的转换。

                unused:有程序元素未被使用。

                fallthrough:switch程序块直接通往下一种情况而没有break。

                path:在类路径、源文件路径等中有不存在的路径。

                serial:在可序列化的类上缺少serialVersionUID定义。

                finally:任何finally子句不能正常完成。

                all:所有情况。

    举个简单的例子,比如在程序中输入 int a = 0 ;鼠标放到a上,会显示未被使用,加此注解之后就不会提示了。

@SuppressWarnings("unused")
 int a=0;

    元注解:

        @Target注解、@Retention注解、@Documented注解、@Inherited注解

        @Target注解用于指定被其修饰的注解能用于修饰哪些程序元素,此注解类型有唯一的value作为成员变量。变量是ElementType类型,是可以被标注的程序元素的枚举类型。

            ElementType.ANNOTATION_TYPE:注解声明。

            ElementType.CONSTRYCTOR:构造方法声明。

            ElementType.FIELD:成员变量声明。

            ElementType.LOCAL_VARIABLE:局部变量声明。

            ElementType.METHOD:方法声明。

            ElementType.PACKAGE:包声明。

            ElementType.PARAMETER:参数声明。

            ElementType.TYPE:类、接口或枚举声明。

        @Retention注解描述了被其修饰的注解是否被编译器丢弃或者保留在class文件中。默认情况下,注解被保存在class文件中,但在运行时并不能被反射访问。此注解包含了一个RetentionPolicy类型的value成员变量,有如下三个枚举类型值。

            @RetentionPolicy.CLASS:@Retention注解中value成员变量的默认值,表示编译器会把被修饰的注解记录在class文件中,但当Java程序运行时,Java虚拟机不再保留注解,从而无法通过反射对注解进行访问。

             @RetentionPolicy.RUNTIME:表示编译器将注解记录在class文件中,在运行程序时,Java虚拟机会保留注解,程序可以通过反射获取该注解。

             @RetentionPolicy.SOURCE:表示编译器将直接丢弃被修饰的注解。

        @Documented注解用于指定被其修饰的注解将被JavaDoc工具提取成文档,此注解没有成员变量。

        @Inherited注解用于指定被其修饰的注解将具有继承性。

    自定义注解:

        注解类型是一种接口,但是又不同于接口,定义一个新的注解类型与定义一个接口非常相似,使用@interface关键字,自定义注解在实际的开发中使用的频率并不是很多,我也就不多讲了。说实话,我也不会啊~

    顺带一提,通过反射方法读取注解信息可以去查查API。

线程:

    首先讲讲什么是进程,进程是程序的一次动态执行过程,是系统运行程序的基本单位,每一个进程都有自己独立的一块内存空间、一组系统资源。每一个进程的内部数据和状态都是完全独立的。

    而线程是进程中执行运算的最小单位,一个进程在其执行过程中可以产生多个线程,而线程必须在某个进程内执行。多线程就是在一个进程中同时运行了多个线程,用来完成不同的工作。根据处理级别的不同,线程也分为核心级线程和用户级线程。

        核心级线程是和系统任务相关的线程,负责处理不同进程之间的多个线程。

        用户级线程就是在开发程序时,由于程序的需要而编写的线程。

    进程和线程的关系:

        一个进程中至少要有一个线程。

        资源分配给进程,同一进程的所有线程共享该进程的所有资源。

        处理机分配给进程,即真正在处理机上运行的是线程。

    多线程的优势:

        多线程程序可以带来更好的用户体验,避免因程序执行过慢而导致出现计算机死机或者白屏的情况。

        多线程程序可以最大限度的提高计算机系统的利用效率,如迅雷的多线程下载。

    线程类:

        每个程序至少自动拥有一个线程,称为主线程,Java程序中main方法即为主线程的入口。定义一个县城类通常有两种方法,分别是继承Thread类和实现Runnable接口。

            继承Thread类:

public class MyThread extends Thread{
    private int count=0;
    public void run(){
        whil
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值