Java多线程与注解

目录

1.序列化SerialVesionUID的作用

2.枚举类的使用

3.什么是注解

4.Java提供的四种元注解是哪些?有什么作用

5.什么是程序?什么是进程?什么是线程?

6.什么是并行?什么是并发?

7.一个Java程序java.exe至少有几个线程?

8.创建多线程有几种方式?

9.继承Thread类方式创建多线程

10.实现Runnable接口的方式创建多线程


1.序列化SerialVesionUID的作用

1.是能够序列化的前提条件

2.也是能够反序列化的前提,当一个Java对象以流的形式被传输出去或保存到磁盘上,能够将其再转换为一个Java的对象的重要条件就是:字节流中的序列化ID和本地实体类的序列化ID一致才能反序列化

2.枚举类的使用

1.类的对象只有有限个,并且是确定的

2.定义一组常量时,建议使用枚举类

3.若枚举类只有一个对象,可以使用单例模式的实现方式

4.枚举类的自定义方式:

        使用enum关键字定义

        对象使用private final形式

        私有化类的构造器,并为对象赋值

3.什么是注解

        注解是jdk5.0新增的功能,是代码中的特殊标记。可以在编译,类加载,运行时读取,并执行注解相对应的处理。

4.Java提供的四种元注解是哪些?有什么作用

1.Java一共提供了四种元注解:@Target、@Retention、@Documented、@Inherited

2.元注解:用来修饰其他注解的注解

3.@Retention:定义注解的生命周期;取值有:

                SOURCE:在源文件中有效

                CLASS:在class文件中有效(默认)

                RUNTIME:在运行时有效

        只有值为RUNTIME才能通过反射获取到;并且编译后能够保存到字节码文件中,运行时能够加载到内存中。

 4.@Target:指明被修饰的注解能够用于修饰哪些结构(类、构造器等)

5.@Documented:指定被修饰的Annotation被Javadoc工具提取为文档;默认情况下,javadoc工具不会将注解文档化,加上@Documented后才会被修饰的注解文档化

6.@Inherited:被修饰的Annotation具有继承性

5.什么是程序?什么是进程?什么是线程?

程序:完成特定任务、用某种语言编写的一组指令的集合

进程:正在运行中的一个程序;进程是资源分配的单位

线程:一个程序内部的一条执行路径;线程是调度和执行的单位

6.什么是并行?什么是并发?

并行:多个CPU可以执行多个任务

并发:一个CPU采取时间片的方式同时执行多个任务

7.一个Java程序java.exe至少有几个线程?

三个:main()主线程

           gc()垃圾回收线程

           异常处理线程

8.创建多线程有几种方式?

四种:继承Thread类方式

           实现Runnable接口

           实现Callable接口

           线程池创建

9.继承Thread类方式创建多线程

1.Thread类实际上也实现了Runnable接口

2.创建步骤:

  1. 创建一个继承于Thread类的子类
  2. 重写thread类的run()方法
  3. 创建thread类的子类的对象
  4. 通过此对象调用start()方法

注意:start()的作用:启动当前线程;调用当前线程的run()方法

public class MyThreadTest {

    public static void main(String[] args) {
        //3.创建Thread类的子类的对象
        Thread1 thread1 = new Thread1();
        //4.通过该对象调用start()方法
        thread1.start();
    }

}
//1.创建一个继承了Thread类的子类
class Thread1 extends Thread {
    //2.重写Thread类的run()方法
    @Override
    public void run() {
        System.out.println("线程实现方式一:继承Thread类方式");
    }
}

10.实现Runnable接口的方式创建多线程

创建步骤:

  1. 创建一个实现了Runnable接口的类
  2. 实现类去实现Runnable中的抽象方法run
  3. 创建实现类的对象
  4. 将该对象作为参数传递到Thread类的构造器中,创建Thread类的对象
  5. 通过Thread类的对象调用start()方法
    public class MyThreadTest {
    
        public static void main(String[] args) {
            //3.创建该实现类的对象
            Thread2 thread2 = new Thread2();
            //4.将该对象作为参数传递到Thread类的构造器中,创建Thread类的对象
            Thread thread3 = new Thread(thread2);
            //5.通过Thread类的对象调用start()方法
            thread3.start();
        }
    }
    //1.创建一个实现了Runnable接口的实现类
    class Thread2 implements Runnable{
        //2.重写run()方法
        @Override
        public void run() {
            System.out.println("线程实现方式二:实现Runnable接口方式");
        }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值