内存:所有的应用程序都需要进入到内存中执行 临时存储RAM
硬盘:永久存储ROM
点击一个应用程序的功能执行,就会开启一条应用程序到cpu的执行路径,cup就可以通过这个路径执行功能,这个路径有一个名字,叫线程。
线程属于进程:是进程中的一个执行单元,负责程序的执行
线程的好处:
如:
单核心线程cpu
4核心8线程
分时调度
抢占式调度
主线程:执行主(main)方法的线程
单线程程序:Java程序中只有一个线程
执行从main方法开始,从上到下依次执行
创建多线程程序的第一种方式:创建Thread的子类
java.lang.Thread类:是描述线程的类,我们想要实现多线程程序,就必须继承Thread类。
实现步骤:
Java使用的就是抢占式调度。优先级高的线程使用cpu先使用,若相同,随机选择一个。
//1.创建一个Thread类的子类
public class MyThread extends Thread{
//2.在Thread类的子类中重写Thread类的run方法,设置线程任务(开启线程要做什么?)
@Override
public void run(){
for (int i = 0;i<20;i++){
System.out.println("run:"+1);
}
}
}
public class CaiNiao{
public static void main(String[] args){
//3 创建Thread类的子类对象
MyThread mt = new MyThread();
//4.调用Thread类中的方法start方法,开启新的线程,执行run方法。
mt.start();
//主线程会继续执行主方法中的代码
for (int i = 0;i<37;i++){
System.out.println("main:"+i);
}
}
}
创建多线程程序的第二种方法:实现Runnable接口
java.lang.Runnable
java.lang.Thread类的构造方法
实现步骤:
实现Runnable接口创建多线程程序的好处:
1 避免了单继承的局限性
2 增强了程序的扩展性,降低了程序的耦合性(解耦)
匿名内部类方式实现线程的创建
匿名内部类的作用:简化代码
格式:
new 父类/接口(){
重置父类/接口中的方法
};
//线程的父类是Thread
//new MyThread().start();
//线程的接口Runnable
//Runnable r = RunnableTmpl();//多态
//new Runnable(r).start();
Thread类的常用方法
获取线程的名称:
设置线程的名称:
原文:https://www.cnblogs.com/cainiao-chuanqi/p/11285428.html