Java多线程(一) 什么是线程
声明:本系列大多是翻译自https://www.javatpoint.com,加上自己的增删改,尽力写的系统而通俗易懂,后文不再重复声明。
点我跳过黑哥的卑鄙广告行为,进入正文。
Java多线程系列更新中~
正式篇:
- Java多线程(一) 什么是线程
- Java多线程(二)关于多线程的CPU密集型和IO密集型这件事
- Java多线程(三)如何创建线程
- Java多线程(四)java中的Sleep方法
- Java多线程(五)线程的生命周期
番外篇(神TM番外篇):
Java的多线程是一个同时执行多个线程的过程。
线程是一个轻量级的子进程,是最小的处理单元。多线程和多进程都用于实现多任务处理。
但是,我们使用多线程而不是多进程,因为线程使用共享内存区域,它们不分配单独的内存区域以节省内存,而且线程之间上下文切换比进程花费的时间更少。
用一个东西之前,总得了解一下它的优点,这样才有动力看下去,这里我们先看一下多线程的优点。
Java多线程的优点
- 它不会阻塞用户,因为线程是独立的,你可以同时执行多个操作,举个栗子,你需要一个延时,等待三秒钟再进行接下来的操作,如果你使用单线程,它就真的等了你三秒,这三秒,啥都不干,啥都得放一边,就等。。。这明显是不可接受的。
- 你可以同时执行多个操作,节省时间。这里面又牵扯到CPU密集型和IO密集型的问题,可以看这篇文章:关于多线程的CPU密集型和IO密集型这件事
- 线程是独立的,死掉一个,不影响另一个。
多任务处理
多任务处理是同时执行多个任务的过程,我们使用多任务处理来尽可能增大CPU的利用率。多任务处理可以通过两种方式实现,没错,多线程和多进程。
1.多进程
- 每个进程在内存中有一个地址,分配一个单独的内存区域
- 进程是重量级的
- 通信成本比较高
- 切换进程需要一些时间来保存和加载寄存器,内存映射等
2.多线程
- 线程共享相同的地址空间
- 轻量级
- 通信成本比较低
什么是JAVA中的线程
线程是一个轻量级的子进程,是最小的处理单元。如下图:

一个系统下可以有多个进程,一个进程中又有多个线程。
JAVA Thread类
Java提供了Thread类来实现线程编程,至于怎么做,且看下文。
Java多线程(一) 什么是线程的更多相关文章
- Java多线程(二) —— 线程安全、线程同步、线程间通信(含面试题集)
一.线程安全 多个线程在执行同一段代码的时候,每次的执行结果和单线程执行的结果都是一样的,不存在执行结果的二义性,就可以称作是线程安全的. 讲到线程安全问题,其实是指多线程环境下对共享资源的访问可能会 ...
- Java多线程(一) —— 线程的状态详解
一.多线程概述 1. 进程 是一个正在执行的程序.是程序在计算机上的一次运行活动. 每一个进程执行都有一个执行顺序.该顺序是一个执行路径,或者叫一个控制单元. 系统以进程为基本单位进行系统资源的调度 ...
- Java多线程(五)线程的生命周期
点我跳过黑哥的卑鄙广告行为,进入正文. Java多线程系列更新中~ 正式篇: Java多线程(一) 什么是线程 Java多线程(二)关于多线程的CPU密集型和IO密集型这件事 Java多线程(三)如何 ...
- Java多线程-同步:synchronized 和线程通信:生产者消费者模式
大家伙周末愉快,小乐又来给大家献上技术大餐.上次是说到了Java多线程的创建和状态|乐字节,接下来,我们再来接着说Java多线程-同步:synchronized 和线程通信:生产者消费者模式. 一.同 ...
- java多线程详解(6)-线程间的通信wait及notify方法
Java多线程间的通信 本文提纲 一. 线程的几种状态 二. 线程间的相互作用 三.实例代码分析 一. 线程的几种状态 线程有四种状态,任何一个线程肯定处于这四种状态中的一种:(1). 产生(New) ...
- Java多线程——<三>简单的线程执行:Executor
一.概述 按照<Java多线程——<一><二>>中所讲,我们要使用线程,目前都是显示的声明Thread,并调用其start()方法.多线程并行,明显我们需要声明多个 ...
- java多线程总结五:线程池的原理及实现
1.线程池简介: 多线程技术主要解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力. 假设一个服务器完成一项任务所需时间为:T1 创 ...
- java多线程(四)-自定义线程池
当我们使用 线程池的时候,可以使用 newCachedThreadPool()或者 newFixedThreadPool(int)等方法,其实我们深入到这些方法里面,就可以看到它们的是实现方式是这样的 ...
- JAVA多线程之当一个线程在执行死循环时会影响另外一个线程吗?
一,问题描述 假设有两个线程在并发运行,一个线程执行的代码中含有一个死循环如:while(true)....当该线程在执行while(true)中代码时,另一个线程会有机会执行吗? 二,示例代码(代码 ...
- java多线程系列六、线程池
一. 线程池简介 1. 线程池的概念: 线程池就是首先创建一些线程,它们的集合称为线程池. 2. 使用线程池的好处 a) 降低资源的消耗.使用线程池不用频繁的创建线程和销毁线程 b) 提高响应速度,任 ...
随机推荐
- 【转载】C#递归删除文件夹目录及文件
在C#文件操作过程中,有时候需要删除相应目录,如果文件夹中含有其他文件夹或者文件,也需要一并进行删除,此时可能就需要使用递归来删除文件夹目录以及文件,递归过程中,如果遍历的对象是文件夹,则删除文件夹, ...
- 第四讲 smart qq 获取联系人信息 ,分组 好友 群聊
首先从post一下 http://s.web2.qq.com/api/get_user_friends2 这个链接获取分组categories ,好友信息 friends,info. string ...
- C#: 向Word插入排版精良的文本框
Text Box(文本框)是Word排版的工具之一.在Word文档正文的任何地方插入文本框,可添加补充信息,放在合适的位置,也不会影响正文的连续性.我们可以设置文本框的大小,线型,内部边距,背景填充等 ...
- stringMVC_09文件批量上传
一.思路 在文件上传的基础上引入数组可以实现批量上传,只需要更改一下前段页面和controller类即可 文件上传: https://www.cnblogs.com/aihuadung/p/10167 ...
- 【转】消除代码中的 if-else/switch-case
在很多时候,我们代码中会有很多分支,而且分支下面的代码又有一些复杂的逻辑,相信很多人都喜欢用 if-else/switch-case 去实现.做的不好的会直接把实现的代码放在 if-else/swit ...
- Java基础IO流(一)
IO概念: 大多数应用程序都需要实现与设备之间的数据传输,例如键盘可以输入数据,显示器可以显示程序的运行结果等.在Java中,将这种通过不同输入输出设备(键盘,内存,显示器,网络等)之间的数据传输抽象 ...
- jQuery中$.ajax()方法参数解析
本文实例为大家讲解了jQuery $.ajax()方法参数,供大家参考,具体内容如下 $.ajax({ url:'test.do', data:{id:123,name:'xiaoming'}, ty ...
- NPOI 读取Excel文件
private void buttonExcel_Click(object sender, EventArgs e) { FileStream fs = null; List<ISheet> ...
- HTML float 和 absolute
block元素和inline元素在文档流中的排列方式: block元素通常被现实为独立的一块,独占一行,多个block元素会各自新起一行,默认block元素宽度自动填满其父元素宽度.block元素可以 ...
- 洛谷P4591 [TJOI2018]碱基序列(hash dp)
题意 题目链接 Sol \(f[i][j]\)表示匹配到第\(i\)个串,当前在主串的第\(j\)个位置 转移的时候判断一下是否可行就行了.随便一个能搞字符串匹配的算法都能过 复杂度\(O(|S| K ...