什么是进程?
正在运行的程序
什么是线程?
进程中,多个独立的小的执行单位
进程中,至少有一个前置/前台线程
CPU执行线程,感官上是同时,但是同一时间,只执行一个线程
切换速度很快,所以感觉上是同时(CPU的切换是随机的)
实现多线程 Thread :3种方式
1.继承Thread类,实现run方法 -> new MyThread()
2.实现Runnable接口,实现run方法 -> new Thread(Runnable)
3.使用匿名内部类集合方式1、2
线程的状态[生命周期]:详见图
优先级:默认值{5},最高{10},最低{1} setPriority(5)
提高了获得CPU时间片的概率
没什么太大用处
守护线程:setDaemon(true)
当所有的前置线程结束,守护线程也结束
通常守护线程都是死循环
主程序自带守护线程:GC
Thread.sleep(1000)
将线程进入阻塞状态
Thread.yield()
归还CPU时间片 – 模拟CPU切换
–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
package java_11;
public class ThreadDemo01 {--------------------------------------------------创建线程方式一
//主方法本身就是一个线程 - main线程
public static void main(String[] args) {
//方式一:创建多个线程 Thread
Thread t = new MyThread1();
Thread t1 = new MyThread1();
//开启线程
t.start();//开启独立线程
t1.start();
// t.run();//普通方法,不能作为独立线程
//所有的前置线程都结束,程序才结束。
System.out.println("main");
}
}
//方式一: 自定义类,继承Thread
//好处:类本身就是线程
//坏处:只能继承一个线程类,扩展性差,耦合性高–(代码与代码之间的关联性高–不好)
class MyThread1 extends Thread{
//重写run方法 - 线程的核心方法,就是线程执行任务
public void run() {
Thread t2 = Thread.currentThread();