Java之多线程

1.1 程序和进程

程序就是一堆静态的代码,存储在硬盘上。程序如果不运行,本质就是一个文件。

程序一次运行产生进程进程一直向前运行,直到进程结束。

1.2 操作系统的发展

单任务操作系统:一段时间只能运行一个程序(任务)CPU利用率非常低。

|

|/

引入进程的概念

程序的一次运行产生进程(内存空间、资源程序的执行堆栈)

进程作为操作系统分配资源的基本单位

|

|/

多任务操作系统

一台电脑就一个CPU多个任务轮流使用CPU,从宏观上看,一段时间有多个任务正在运行。

微观上看,一个时间点只有一个任务在运行。

CPU时间片

多个进程通过CPU时间片轮转实现多任务(进程)。把这种现象叫做并发操作

并行:

多个CPU运行各自的进行。

|

|/

线程的引入

解决实时性问题

1.3 进程和线程区别

综合性案例

1.4 线程实现

Thread 位于java.lang,表示进程中的执行线程。实现多线程两种方式

[1] 继承Thread接口,重写run方法

 1 public class MyThread extends Thread {
 2 
 3     @Override
 4     public void run() {
 5         System.out.println("我是多线程MyThread");
 6         for (int i = 0; i < 5; i++) {
 7             System.out.println("MyThread:" + i);
 8         }
 9     }
10 }
 1 public class Test01 {
 2     public static void main(String[] args) {
 3 
 4         // main开始运行产生一个进程,该进程默认有个主(main)线程
 5         // 创建线程
 6         MyThread t1 = new MyThread();
 7         // 启动线程
 8         t1.start();
 9 
10         for (int i = 0; i < 5; i++) {
11             System.out.println("main Thread:" + i);
12         }
13 
14     }
15 }

main线程和t1线程抢占CPU 执行多线程在提高CPU利用率的同时增加程序的复杂度。

[2]实现Runnable接口,实现run方法

 1 public class MyRun implements Runnable {
 2 
 3     @Override
 4     public void run() {
 5         System.out.println("我是MyRun");
 6         for (int i = 0; i < 5; i++) {
 7             System.out.println("my run:" + i);
 8         }
 9     }
10 }
 1 public class Test02 {
 2     public static void main(String[] args) {
 3         
 4         MyRun run = new MyRun();
 5         Thread t1 = new Thread(run);
 6         t1.start();
 7 
 8         // main开始运行产生一个进程,该进程默认有个主(main)线程
 9         for (int i = 0; i < 5; i++) {
10             System.out.println("main Thread:" + i);
11         }
12     }
13 }
原文地址:https://www.cnblogs.com/qq308015824/p/10828575.html