• 多线程——Java面向对象(27)


    一、理解程序、线程、进程

    • 程序:program 是一个静态的概念
    • 进程:process 是一个动态的概念
    • 进程是程序的一次动态执行过程,占用特定的地址空间
    • 每个进程都是独立的,由3部分组成cpu data code
    • 缺点: 内存的浪费,cpu的负担
    • 线程:Thread 是进程中的一个“单一的连续控制流程/执行路径”
    • 线程又被称为轻量级进程
    • 一个进程可拥有多个并行的线程
    • 一个进程中的线程共享相同的内存单元/内存地址空间->可以访问相同的   变量和对象,而且它们从同一堆中分配对象->通信、数据交换、同步操作
    • 由于线程的通信是同一地址空间上进行的,所以不需要额外的通信机制,这使得通信更简便而信息传递的速度也更快。

     

    • 什么是多线程
      • 如果在一个进程中同时运行了多个线程,用来完成不同的工作,则称之为“多线程”
      • 多个线程交替占用CPU资源,而非真正的并行执行
    • 多线程好处
      • 充分利用CPU的资源
      • 简化编程模型
      • 带来良好的用户体验

    二、创建线程的两种方式-重点

    1、extends 继承 Thread类,重写run方法。

    class 定义类名  extends  Thread{
    
        @Override
    
    public void run(){
    
         ……
    
    }
    
    }

    启动线程:

    Thread th = new Thread(自定义线程对象);
    
    th.start();

    第二种定义线程方式:

      new Thread(){
    
              @Override
    
             public void run() {
    
              for(int i = 0; i < 10; i++){
    
             System.out.println("线程二");
    
              }
    
             }
    
       }.start();

    2、implements 实现Runnable接口

       class 自定义类 implements Runnable{
    
        @Override
    
        public void run() {
    
      ……
    
        }
    
      }

    启动线程:

    Thread th = new Thread(自定义线程对象);
    
    th.start();

    线程5个状态

    1、创建状态

    2、就绪状态

    3、运行状态

    4、阻塞状态

    5、死亡状态

     

     

    三、线程调度的几个方法

     

    四、当并行、并发情况导致问题,用synchronized关键进行标识

    将抢票情况做一个简单地模拟

    当拥有线程锁机制synchronized时,其共同地资源num总票数并不会产生错误的情况。

     

    当不拥有线程锁机制synchronized时,其共同地资源num总票数会因为并发的机制而产生错误。

     

  • 相关阅读:
    LaTeX公式编辑器
    早期和东京,京都大学高考试题
    猎犬追狐狸试题
    矩阵方程的计算求解(Matlab实现)
    高考压轴题
    何天成:从高联到IMO金牌,超详细数学竞赛学习方法
    几个精彩的数论问题
    高考试题网站
    泛函分析有什么好的教材?
    ifndef系列
  • 原文地址:https://www.cnblogs.com/Unlimited-Rain/p/12554814.html
Copyright © 2020-2023  润新知