//博主太赖了,并没有提供范例程序
四个元注解类型
@Target
指定被其修饰的注解能用于修饰那些程序元素
成员变量value为ElementType
@Retention
指定该注解可使用反射读取
成员变量value:RetentionPolicy枚举类型
@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():当前线程转入暂时停止运行的状态
对比:sleep和yield方法
Sleep yield
进入状态 阻塞状态 暂时停止状态
无其他线程时 休眠完毕后执行 回复自身线程
有其他线程时 休眠完毕后,其他线程机会均等 优先级相等或更高的线程
相同点 让线程暂时停止运行