注解,多线程

 //博主太赖了,并没有提供范例程序

四个元注解类型

@Target 

指定被其修饰的注解能用于修饰那些程序元素

成员变量valueElementType

@Retention

指定该注解可使用反射读取

成员变量valueRetentionPolicy枚举类型

@Documented

指定被其修饰的注解江北javaDoc工具提取成文档

@Inherited

指定被其修饰的注解将具有继承性

 

1、元注解:用来修饰注解的注解

2、自定义注解:

(1)语法:public @interface 注解名{

数据类型 变量名() default 默认值;//成员变量

}

示例:public @interface AgeAno{

Int age() default 19;

}

(2)限定自定义注解可以修饰哪些元素:

@Target(ElementType.METHOD);//指定注解从来休息方法

@Retention(RetentionPolicy.RUNTIME)//运行期间注解可以被反射

Public @interface 注解名{}

注:自定义注解中的成员变量需要给定初始值,吐过不给定,则调用时必须给定 

 

3、线程和进程:

(1)一个进程至少包含一个线程(单线程),进程可以包含多个线程(多线程)

(2)单线程特点就是:依次执行,比如:main方法

4、现成的实现方式

(1)继承Thread

//1、继承Thread

//2、重写run()方法,方法体就是线程要做的事情

//3、启动线程,创建Thread子类的对象,调用start()方法

(2)实现方式:实现Runnable接口

<1>实现Runnable接口

<2>重写run()方法

<3>启动线程

注:启动线程时,创建Thread对象,将实现类对象作为参数传入

Thread t = new Thread(new 实现类());

T.start();

 

练习:使用两种创建线程的方式,实现输出1-100之间的偶数

 

5、线程的生命周期

四个状态:新生状态,可运行状态,阻塞状态,死亡状态

6、设置优先级

(1)设置优先级:setPriority(优先级)

优先级的值:1-10,默认是5,最高级:1

示例:线程对象.setPriority(1);

注:线程优先级最终决定于计算机分配

(2)join(毫秒);阻塞指定的线程等到另一个线程完成以后再继续执行

类似于插队操作

(3)让线程睡眠:sleep(毫秒数)

当前线程在指定毫秒内停止执行儿转入不可运行状态

注:join方法需要使用线程类的对象调用

Sleep方法使用Thread调用即可(静态方法)

(4)yield():当前线程转入暂时停止运行的状态

对比:sleepyield方法

  Sleep  yield

进入状态  阻塞状态 暂时停止状态

无其他线程时 休眠完毕后执行 回复自身线程

有其他线程时 休眠完毕后,其他线程机会均等 优先级相等或更高的线程

 

相同点 让线程暂时停止运行

 

 

原文地址:https://www.cnblogs.com/letben/p/5185479.html