美文网首页技术干货程序员
JAVA多线程01-基础篇-基本概念

JAVA多线程01-基础篇-基本概念

作者: x_coder | 来源:发表于2017-10-23 17:08 被阅读0次

多线程是java中非常重要的一个部分,本系列文章从线程开始,逐步延伸到多线程的内容,欢迎大家互相交流学习

本节摘要:介绍进程、线程的基本概念,介绍线程的状态以及状态之间的转换关系

进程:在内存中独立运行的应用程序,拥有系统资源(cpu,内存),例如QQ,邮件等,因为进程处于不同的内存,所以进程间通讯比较困难。

线程:可以理解为进程中的一段代码(单一的一个顺序控制流),例如我们程序中的main方法,这个线程就是一个主线程,一个进程中包含多个线程,线程间共享所属进程的资源(CPU,内存),运行过程中是通过抢占CPU时间片来执行的,cpu会轮流给每个线程分配时间,线程间通讯很容易,速度也很快

并行:每个线程独占CPU资源,真正的同时执行

并发:多个线程轮流占用CPU资源

为什么要多线程

  1. 多核心
    随着处理器核心数量越来越多,可以大幅提高程序的处理效率
  2. 快速响应
    多个任务可以通过多个线程并行去处理,大大提升响应速度

线程的状态图

timg.jpg

线程状态说明
1. 新建状态:线程对象被创建后,就进入了新建状态,例如:Thread t1 = new Thread();
2. 可运行状态(Runnable):线程调用start()方法后,就进入可运行状态,等待获得cpu调度执行
3. 运行状态(Running):线程在获得cpu执行权限后,就进入到运行状态,当线程调用yield()方法后,线程从运行状态又回到可运行状态
4. 阻塞状态:是因为线程因为某种原因而失去cpu的执行权限,线程只有进入可运行状态,才能进入到运行状态,阻塞分为以下三种情况:
  a.阻塞事件 :例如调用线程的sleep()方法,join()方法,或者I/O阻塞,线程就会进入到阻塞状态,当sleep()超时、join()超时,或者I/O执行完成,线程由阻塞状态进入到可运行状态
  b.等待阻塞:调用线程的wait()方法时,线程会等待其他线程完成,此刻当前线程会释放锁,并进入到对象锁的等待池中,当调用对象的notify或者notifyAll()方法时,线程会从等待池进入到对象的锁池,当线程获得到对象锁后,就进入到可运行状态,等待cpu调度执行
  c.锁阻塞(同步阻塞):当线程在获得对象锁时,由于对象的锁已经被其他线程获取,当前线程进入阻塞状态,直到当前线程获得到对象锁后,线程会进入到可运行状态
5.死亡状态:当线程正常执行完成,或者由于异常终止,线程进入到死亡状态,生命周期结束

转载请注明作者及出处,并附上链接http://www.jianshu.com/u/ada8c4ee308b

相关文章

  • java多线程相关

    (一) 基础篇 01.Java多线程系列--“基础篇”01之 基本概念 02.Java多线程系列--“基础篇”02...

  • JAVA多线程01-基础篇-基本概念

    多线程是java中非常重要的一个部分,本系列文章从线程开始,逐步延伸到多线程的内容,欢迎大家互相交流学习 本节摘要...

  • Java多线程系列目录(共43篇)-转

    最近,在研究Java多线程的内容目录,将其内容逐步整理并发布。 (一) 基础篇 Java多线程系列--“基础篇”0...

  • java并发编程(四)

    java多线程编程(四) 引言: 内存模型的基础----内存模型相关的基本概念 java内存模型中的顺序一致性--...

  • java多线程-01-基本概念

    [TOC] 声明 该系列文章只是记录本人回顾java多线程编程时候记录的笔记。文中所用语言并非严谨的专业术语(太严...

  • JAVA多线程-基础篇-目录

    刚忙完双十一,本系列内容也恰好告一段落,总共分为11个章节,希望对大家有所帮助 JAVA多线程01-基础篇-基本概...

  • android 多线程 — 线程的面试题和答案

    这里都是我从各个地方找来的资料,鸣谢: Java多线程干货系列—(一)Java多线程基础 JAVA多线程和并发基础...

  • 技术体系

    一,java核心 java基础,jvm,算法,多线程,设计模式 Java基础:java基础相关,全栈java基础 ...

  • 多线程--同步与锁

    同步与锁 上一篇中,笔者介绍了Java多线程的基础知识,主要讲解了进程/线程的区别、Java多线程的创建、Java...

  • Java多线程目录

    Java多线程目录 Java多线程1 线程基础Java多线程2 多个线程之间共享数据Java多线程3 原子性操作类...

网友评论

    本文标题:JAVA多线程01-基础篇-基本概念

    本文链接:https://www.haomeiwen.com/subject/khrauxtx.html