一.概念:
线程是程序内一条执行路径
1.进程和线程:
进程是我们执行程序系统为我们分配的区域, 不能工作, 真正工作的是这个区域中的线程, ==>所有的代码都是由线程执行的!
2.并行和并发
并行:单位时间片, 同时在执行任务
并发:单位时间片, 在交替执行
结论:java程序都是并发执行的
二.线程的第一种方式
1.定义类型继承Thread
2.重写run方法, 将要执行的任务放到run方法中
3.创建线程子类对象, 调用start方法启动线程
三.线程的第二种方式
1.定义类型实现Runnable接口
2.重写run方法, 将要执行的任务放到run方法中
3.创建Runnable的实现类类对象
4.创建Thread对象将Runnable的子类传入, 调用start方法开启线程
四.功能
getName() setName();获取线程的名字和设置线程的名字
static Thread currentThread();解决第二种方式实现线程的尴尬, 可以获取正在执行的线程对象
static void sleep(long time);让当前线程处理睡眠状态
void join();插队的意思, 那条线程调用这个join, 内部会有队列, 这个执行不完, 不会开启其他线程
void setDeamon(boolean flag)true, 代表设置当前线程为守护线程
五.注意事项:
开启线程一定是调用start方法才能开启, 不能调用run,当我们调用start方法, 底层会调用本地方法start0开启线程, 系统会为这条线程分配独立的栈空间, cpu就可以在这多个栈空间中交替执行代码, 相互不影响