首页 > 编程语言 > 详细

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

时间:2020-03-23 20:40:47      阅读:67      评论:0      收藏:0      [点我收藏+]

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

  • 程序: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总票数会因为并发的机制而产生错误。

技术分享图片

 技术分享图片

 

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

原文:https://www.cnblogs.com/Unlimited-Rain/p/12554814.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!