多线程
进程:进程指正在运行的程序。确切的来说,当一个程序进入内存运行,即变成一个进程,进程是处于运行过程中的程序,并且具有一定独立功能
线程:线程是进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少有一个线程。一个进程中是可以有多个线程的,这个应用程序也可以称之为多线程程序。
简而言之:一个程序运行后至少有一个进程,一个进程中可以包含多个线程
*main方法其实就是一个线程:所以main方法顺序执行
*main方法所在的线程叫 主线程
*/
public class Demo01 {
public static void main(String[] args) {
System.out.println(1/0);
}
}
创建线程方式一继承Thread类
public class ThreadDemo01 extends Thread{
@Override
public void run() {
for(int i=0;i<10;i++){
System.out.println("run..."+i);
}
}
}
public class Demo02 {
public static void main(String[] args) {
ThreadDemo01 td=new ThreadDemo01();
//td.run();//不会开启任何自定义线程,这句话仅仅相当于创建对象调用方法
td.start();
for(int i=0;i<10;i++){
System.out.println("main..."+i);
}
}
创建线程方式—实现Runnable接口
创建线程的另一种方法是声明实现 Runnable 接口的类。该类然后实现 run 方法。然后创建Runnable的子类对象,传入到某个线程的构造方法中,开启线程。
public class MyRunnable implements Runnable{
//定义线程要执行的run方法逻辑
@Override
public void run() {
for (int i = 0; i < 10; i++) {
System.out.println("我的线程:正在执行!"+i);
}
}
}
public class Demo02 {
public static void main(String[] args) {
//创建线程执行目标类对象
Runnable runn = new MyRunnable();
//将Runnable接口的子类对象作为参数传递给Thread类的构造函数
Thread thread = new Thread(runn);
Thread thread2 = new Thread(runn);
//开启线程
thread.start();
thread2.start();
for (int i = 0; i < 10; i++) {
System.out.println("main线程:正在执行!"+i);
}
}
}