1. 什么是线程? 线程和进程的区别

在了解线程的概念前,我们应该先知道什么是进程?

进程是操作系统的基本概念之一, 它是正在执行的程序实例。

* 下面的一些进程的基本概念你可以了解下

--------------------------------------------------------------------

操作系统逻辑上将一个进程分为以下几部分(段):

# 文本

程序的指令

# 数据

程序使用的静态变量

# 堆

程序可从该区域动态分配额外内存

# 栈

随函数调用和返回而增减的一片内存, 用于为局部变量和函数调用链接信息分配存储空间

--------------------------------------------------------------------


那么,什么是线程呢?

线程是程序执行的最小单位。

我们可以把线程看做是轻量级的进程。

使用多线程而不是多进程去进行并发程序的设计,是因为线程间的切换和调度成本要远远小于进程。

2. 线程的生命周期和各个状态

NEW(新生)

线程刚被新建好之后,进入 NEW(新生)状态

这个时候线程还没开始执行

RUNNABLE(运行)

当线程的start()方法调用时, 才表示线程开始执行。

BLOCKED(阻塞)

如果线程在执行的过程中遇到了synchronized同步块, 就会进入

BLOCKED(阻塞)状态, 这时线程会暂停执行,知道获得请求的锁。

WAITING / TIMED_WAITING

这两个状态都是线程进入等待状态

区别是: WAITING(无时间限制) / TIMED_WAITING(有时间限制)

wait()方法会让线程进入等待队列

notify()方法会在等待队列中将线程唤醒

join()方法让线程进入等待队列,等目标线程终止

TERMINATED(终止)

当线程执行完毕后,则进入TERMINATED(终止)状态

Java高并发和多线程系列 - 1. 线程基本概念相关推荐

  1. java高并发与多线程汇总(一):基础知识(上)

    java高并发与多线程汇总 往期文章推荐:   java高并发与多线程汇总(一):基础知识(上)   java常见面试考点(四十二):序列化与反序列化   java常见面试考点(四十三):泛型   j ...

  2. Java高并发和多线程的面试笔试题——稳拿offer

    1.在java中守护线程和本地线程区别? java中的线程分为两种:守护线程(Daemon)和用户线程(User). 任何线程都可以设置为守护线程和用户线程,通过方法Thread.setDaemon( ...

  3. Java高并发与多线程网络编程

    目录 一. 基础 1. 线程介绍 2. 创建并启动线程 3. 函数式接口编程 4. Thread 构造器 5. 守护线程 线程关系 6. join 7. interrupt 8. 优雅的结束线程 9. ...

  4. java高并发(十八)线程池

    在之前已经使用过线程池了.在使用中,基本上就是初始化好线程池的实例之后,把任务丢进去,等待调度执行就可以了.使用起来非常简单方便. new Thread弊端 每次new Thread新建对象,性能差 ...

  5. Java高并发编程:性能与线程竞争

    线程的最主要目的是提高程序的运行性能,线程可以使程序更加充分地发挥系统地可处理能力,从而提高系统的资源利用率.此外,线程还可以使程序在运行现有的任务的情况下即开始处理新的任务.但性能的提升会导致复杂性 ...

  6. java高并发程序设计(二)线程状态,sychronized,wait,notify,AtomicInteger,CountDownLatch

    线程同步之sychronized细究 1.1 关于sychronized的小例子 多线程环境下,如果采用有锁编程可以考虑Sychronized和ReentrantLock,首先介绍一下sychroni ...

  7. Java高并发程序设计(六)--线程池(1)

    线程的创建和关闭需要花费时间,可能会浪费资源,所以可以通过让线程复用来解决这个问题. 线程池就是这样一个概念,当需要创建线程的时候直接从线程池中获取,当关闭线程的时候直接归还线程给线程池. Threa ...

  8. Java高并发编程:多个线程之间共享数据的方式探讨

    内容摘要 多个线程之间共享数据,按照每个线程执行代码是否相同,我们可以采取不同的处理方式,这里通过简单的卖票示例说明了当每个线程执行相同代码的情况,对于多个线程执行不同代码的情况,处理方式比较灵活,这 ...

  9. java高并发(一)导学

    现在准备系统学习java高并发与多线程相关知识. 首先了解一下我们这一套知识的学习思路: 并发与高并发相关概念 CPU多级缓存 缓存一致性 乱序执行优化 java内存模型 JMM规定.抽象结构 同步操 ...

最新文章

  1. 黑马lavarel教程---8、session
  2. CSS3无前缀脚本prefixfree.js及Animatable介绍
  3. idea写java spark程序,Spark : 在IDEA中用scala编写Spark的WordCount程序并提交运行
  4. NIS认证管理域中的用户
  5. 二分法猜数——C/C++
  6. C#信息采集系统,常见控件练习
  7. python语言里数字包括_Python 学习 第一篇:数据类型(数字,布尔类型,操作符)...
  8. hp微型计算机网线怎么安装,惠普M1130网络打印机怎么安装设置?
  9. 中兴捧月营销精英挑战赛回顾
  10. 那山的那边海的这边有一群程序员
  11. ssci源刊里有开源期刊吗_2020年SCI期刊影响因子重磅发布!你投过的期刊涨了吗?...
  12. TCP 协议面试灵魂 12 问(二)
  13. 基于鸿蒙系统的APP测试技术,快来入坑
  14. web渗透测试实战-SQLMAP
  15. HX711压力传感器学习(STM32)
  16. 耳机接口规则_3.5mm手机耳机接口制式扫盲篇
  17. 手机如何扫码连接wifi
  18. 业界新闻: JAVA 7新特性让JVM“瘦身”成功!
  19. #SORA#celery实践1
  20. USB转串口驱动 PL2303HXA 支持win10_64

热门文章

  1. sql-server基础知识四(视图和索引)
  2. python有向图_Python 中的垃圾回收机制
  3. mysql 统计_mysql数据统计级别技巧
  4. python xlwt写入excel_python xlwt模块写入excel超过65536行报错问题解决方法
  5. 数据结构与算法总结——背包问题与组和问题
  6. tensorflow学习(2.网络模型的存储以及提取)
  7. 【GAN优化】详解对偶与WGAN
  8. 再印!抽奖!有三AI学习扑克牌新一批货到
  9. 引入科研院所中科微研携手-林裕豪:从玉农业谋定农业大健康
  10. “盗”亦有道,关于robots协议