一、进程
首先,进程代表运行中的程序,也就是一个Java程序代表一个进程,也可以理解为是一个应用程序。
其次进程包括线程,从开发的角度来看,每一个线程都是进程中可独立执行的子任务。一个进程包含多个线程。
二、线程
在Java中线程分为两大类:**守护线程** 和 **用户线程**
守护线程:当进程不存在或主线程停止,守护线程也会被停止,通常守护线程执行一些重要性不是很高的任务(监视其他线程的运行情况)
用户线程:是用户自己创建的线程,主线程结束后,用户不会停止。用户线程会阻止JVM无法停止。即JVM结束之前所有的用户线程都必须执行完毕,否则JVM无法停止。
三、多线程的创建
多线程的创建分为以下三种:
继承Thread类(重写run方法)、实现Runnable接口(重写run方法)、通过匿名内部类实现
一般情况下如果要用以上三种方式实现多线程 建议还是实现Runnable,因为实现了之后还可以继承别的类,继承了则不能再次继承。
1、继承Thread类
class CreateThread extends Thread {
// 执行run方法
public void run() {
for (int i = 0; i< 10; i++) {
System.out.println("i:" + i);
}
}
}
public class ThreadDemo {
public static void main(String[] args) {
System.out.println("<<<<<< 多线程创建开始 >>>>>>");
// 1.创建一个线程
CreateThread createThread = new CreateThread();
// 2.开始执行线程 注意 开启线程不是调用run方法,而是start方法
System.out.println("<<<<<< 多线程创建启动 >>>>>>");
createThread.start();
System.out.println("<<<<<< 多线程创建结束 >>>>>>");
}
}
2、实现Runnable接口
class CreateRunnable implements Runnable {
@Override
public void run() {
for (int i = 0; i< 10; i++) {
System.out.println("i:" + i);
}
}
}
public class ThreadDemo {
public static void main(String[] args) {
System.out.println("<<<<<< 多线程创建开始 >>>>>>");
// 1.创建一个线程
CreateRunnable createThread = new CreateRunnable();
// 2.开始执行线程 注意 开启线程不是调用run方法,而是start方法
System.out.println("<<<<<< 多线程创建启动 >>>>>>");
Thread thread = new Thread(createThread);
thread.start();
System.out.println("<<<<<< 多线程创建结束 >>>>>>");
}
}
3、匿名内部类实现
System.out.println("<<<<<< 多线程创建开始 >>>>>>");
Thread thread = new Thread(new Runnable() {
public void run() {
for (int i = 0; i< 10; i++) {
System.out.println("i:" + i);
}
}
});
thread.start();
System.out.println("<<<<<< 多线程创建结束 >>>>>>");
以上是多线程创建的方式,使用多线程的好处可以提高程序效率。一般工作中使用线程池来创建线程,进行统一的线程管理,降低了资源的浪费,提高了相应速度。
不对的地方请指出来 ,谢谢!!!