zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    解决uniapp中app.vue的onlaunch不能跳转页面问题
    参数校验注解,备用
    码云推送项目总是没有权限
    一句话解释回调函数
    动态管理
    转:用jupyter notebook打开指定目录下的.ipynb文件
    gcn变体
    图4
    节点分类
    图3
  • 原文地址:https://www.cnblogs.com/qq308015824/p/10828575.html
Copyright © 2011-2022 走看看