注解Annotation
一、注解的概念:
注释:写给程序员看的
注解:写给编译器、JVM看的。
1.@Override
class test1{
//注解:JVM知道这个方法是重写方法,检查这个方法是否符合重写规则。
@Override
public String toString() {
return "test1 []";
}
}
后面学习框架的时候会遇到大量的注解,结合反射一起运用。
2.预定义注解:
JDK自带的注解。
class test1{
//注解:JVM知道这个方法是重写方法,检查这个方法是否符合重写规则。
@Override
public String toString() {
return "test1 []";
}
@Deprecated//不推荐使用
void test() {
}
@SuppressWarnings("")//警告
void test1() {
}
}
二、自定义注解
1.注解简单定义
@Table(value = "UserTable")//使用注解
class User{
}
//声明一个自定义注解,该注解的名字为Table
//@interface是声明注解的注解
@interface Table{
String value();//该注解的属性,value属性,String的值
//String tupe();
}
2.配置注解相关的使用信息
@Target(ElementType.TYPE)//声明Table注解在哪使用:类、属性、方法
@Retention(RetentionPolicy.RUNTIME)//声明Table注解是什么时候用:运行、编译
三、注解的应用场景
通过注解将类和表对应起来
表——类:userTable——user
列——属性:
id——id:主键
name——userName:
import java.lang.annotation.Annotation;
/*
* 通过注解将类和表对应起来
*/
public class AnnotationTest3 {
public static void main(String[] args) {
Class clazz = User.class;
Annotation[] ana = clazz.getAnnotations();
}
}
@interface Bean{
//作用在类上,代表该类与哪张表对应
String table();
}
@interface Id{
//作用在类的属性上,代表该属性是主键
String value();
}
@interface Column{
//作用在属性上,代表该属性所对应的列
String value();
}
@Bean(table = "user")//代表User类对应的表是User表
class User{
@Id(value = "u_id")//代表id属性是主键,同时表中的主键列是u_id
private int id;
@Column(value = "nickName")
private String name;
@Column(value = "password")
private String pwd;
@Column(value = "telNumber")
private String phone;
@Column(value = "userType")
private String type;
@Column(value = "q_email")
private String email;
@Column(value = "qq")
private String qq;
}
四、反射+泛型+注解
多线程
一、多线程的概念
1.程序、进程和线程
(1)程序:是为完成特定任务、用某种语言编写的一组指令的集合。即值一段静态的代码,静态对象。
(2)进程:任务管理器中运行的功能软件,进程之间是相对独立的,有它自身的产生、存在和消亡的过程,Java.exe进程Javaw.exe
几核CPU就代表同一个瞬间能处理的任务数。通过主频频繁的切换。
(3)线程:线程是进程的执行单位,一个进程中的小功能是由线程来实现的,线程是程序内部的一条执行路径。
2.并发和并行:
(1)并行:比如鸣人的影分身,分身同时做事情,每个分身是独立的。
(2)并发:同一个人,交替做两件事情。(时间片轮转:两个线程,抢占CPU资源。)
二、多线程的实现:
Java语言的JVA允许程序运行多个线程,通过java.lang.Thread类来实现。
多线程的模型:工人做任务。
多线程实现的2种方式:
1.继承Thread类实现多继承:
Thread类的特性:
每个线程都是通过某个特定Thread对象的run()方法来完成操作的,经常把run()方法的主体称为线程体。通过Thread对象的start()方法来调用这个线程。