多线程的基础知识

麒麟操作系统Kylin如何从 2203 升级到 2403 fill:#333;important;important;fill:none;color:#333;color:#333;important;fill:none;fill:#333;height:1em;开始升级流程第一步:升级前准备1. 确认版本为 V10 SP1 22032. 备份全部重要数据3. 确保网络稳定4. 关闭应用第二步:选择升级方式方法一:图形界面升级方法二:命令行升级1. 更新现有系统至最新2. 启动“系统升级”工具3. 检测并开始下载2403。 阅读详情

多线程
程序
程序是含有指令和数据的文件,被储存在磁盘或者其他的数据存储设备中,程序是静态的代码。
进程
进程是程序的一次执行过程,是系统运行程序的基本单位,进程是动态的。
多任务
多任务是指在一个程序中可以同时运行多个进程,即有多个独立运行的任务,每一个任务对应一个进程。
线程
线程是一个执行中的程序,但是线程是一个比进程更小的执行单位,一个进程在其执行的过程中可以产生多个线程,形成多条执行路径。
同类的多个线程共享同一块内存和一组系统资源的。
多线程就是同时执行一个以上线程,一个线程的执行不必等待另一个线程执行完后才执行,所有线程可以发生在同一时刻。

线程的5种状态
在这里插入图片描述

实现多线程的两种方式

  • 子类继承Thread类,子类创建的线程都拥有各自的方法和变量。
  • 自己创建的类实现Runnable接口,可以轻松实现多个线程共享相同的数据,只要用同一个实现了Runnable接口的类的对象作为参数创建多个线程就可以。

Runnable接口适合处理多线程访问同一资源的情况,并且可以避免由于Java语言的单继承性带来的局限。

线程同步
防止多线程的后一个线程对同意变量的更改结果覆盖了前一个线程对变量名的更改结果,造成数据混乱,必须保证线程在一个完整的操作所有的动作的执行过程中,都占有相关的资源而不被打断,这就是线程同步的概念。

  • 临界资源(同步资源):在并发程序设计中,多线程共享的资源或数据。
  • 临界代码(临界区):每个线程中访问临界资源的那段代码成为临界代码。临界区必须互斥的使用。

Java技术利用对象“互斥锁”机制来实现线程之间的互斥操作。在Java语言中,每个对象都有一个“互斥锁”与之相连。

synchronized:用来标识同步的资源
synchronized的功能:首先判断对象或方法的互斥锁是否存在,如果如在就获得互斥锁,然后就可以执行紧随其后的临界代码段或方法体;如果对象或方法的互斥锁不存在,就进入等待状态,直到获得互斥锁。
说明:
1.synchronized通常锁定的是临界代码;
2.synchronized锁定的代码数量越少越好,否则会失去多线程的优势;
3.如果两个或多个线程锁定的不是同一个对象,则他们的synchronized代码块可以相互交替穿插并发执行;
4.所有的非synchronized代码块都可以自由的调用;
5.一个线程可以同时拥有两个对象的互斥锁;
6.任何时刻,一个对象的互斥锁只能被一个线程锁拥有;
7.只有带那个一个线程执行完他所调用对象的所有的synchronized代码块或方法时,该线程才会释放这个对象的互斥锁;
8.临界代码中的共享变量应该定义为private;
9.只能用临界代码中的方法访问共享变量;
10.一定要保证,所有对临界代码中共享变量的访问和操作都在synchronized代码块中进行;
11.通常共享变量都是私有静态变量;
12.对于一个static型的方法,要么整个方法是synchronized,要么整个方法不是synchronized。
13.如果synchronized在类中声明,则该类的所有方法都是synchronized的。

FreeRTOS-Plus-CLI使用笔记 FreeRTOS-Plus-CLI使用笔记 一、简介 详细介绍可参考FreeRTOS-Plus-CLI官网地址入口 FreeRTOS+CLI(Command Line Interface, 命令行接口)提供了一种简单、小型、可扩展且RAM高效的方法,使FreeRTOS应用程序能够处理命令行输入。添加一条指令的步骤如下: 提供一个实现命令功能的函数 将命令映射到该功能函数 注册命令 运行命令解释器 命令行调试接口对于排查分析出现的问题提供了很好的接口,可以通过查看传感器信息判断传感器是否正常,可以查看内置 阅读详情

相关推荐

飞行器坐标转换

本文定义的是右手直角坐标系,x−y−zx-y-zx−y−z轴分别为北-天-东。从AAA坐标系到BBB坐标系是分别绕y−z−xy-z-xy−z−x轴,即天-东-北旋转ψ−θ−γψ−θ−γ。如果AAA是惯性系,BBB是机体系,则这三个角度分别为偏航角、俯仰角、横滚角。图1 惯性系到机体系。

gongfuyd的博客 1355

java多线程中synchronized同步代码块执行问题

      在高洪岩老师的《java多线程编程核心技术》一书的用同步代码块解决同步方法的弊端一节中(p76页),有这样一句话:“当一个线程访问object的一个synchronized同步代码块时,另一个线程依然可以访问该object对象中的非synchronized(this)同步代码块”。      我产生一个问题:如果线程A调用object对象中的synchronized同步代码块,线程B调...

热爱诗与歌,享受编程每一刻。 2326

从专利库到Zemax:一个6mm定焦镜头从零到交付的完整设计流程(含CodeV转换技巧)

本文详细介绍了6mm定焦镜头从专利库检索到最终交付的全流程设计,重点解析了CodeV与Zemax工具链的无缝衔接技巧。通过实际案例展示规格定义、专利筛选、结构适配、非球面优化等关键步骤,帮助光学设计工程师提升设计效率和制造良率。特别包含CodeV转换Zemax的实用技巧,适用于机器视觉和安防镜头开发。

weixin_42561040的博客 161

线程同步问题 解决同步问题的方法 synchronized方法 同步代码块

来源:http://www.itzhai.com/java-based-notebook-thread-synchronization-problem-solving-synchronization-problems-synchronized-block-synchronized-methods.html 1、多线程的同步: 1.1、同步机制: 在多线程中,可能有多个线程

zygzzp的专栏 1733

F28335 DSP ePWM模块实战:从基础配置到电机控制

本文详细解析了TI TMS320F28335 DSP的ePWM模块,从基础概念、寄存器配置到实战应用。通过代码示例,手把手教你如何配置定时中断、生成PWM波形、实现死区保护与故障联防,并最终完成一个可调速、可换向的直流电机控制项目,是掌握F28335电机控制核心技术的实战指南。

g5h6i的博客 1128

Augustus手动安装教程

本文记载了如何结合conda手动安装Augustus

m0_65437087的博客 1256

并发编程(二):Synchronized关键字(面试最全讲解)

Synchronized 的基本概念? Synchronized 在项目中怎么使用? Synchronized 的底层实现? Synchronized JDK1.6版本有哪些优化? Synchronized 与ReentrantLock的区别? 一:基本概念 Synchronized:是JVM层次上的锁(监视器锁),可重入,非公平锁。 synchronized...

F道人 296

车道线检测(传统基于Opencv的方法)

传统车道线检测方法主要是使用颜色选择、高斯平滑、边缘检测、ROI区域选择、霍夫变换、标定车道边界等Opnecv图像处理操作去检测道路上的车道线,我自己对很多用这类处理对很多道路场景车道线进行过实验,这类算法往往需要人工根据不同街道场景手动去反复调整各算法参数,从而才能使检测效果最佳。

Yangxiaoaijiejie的博客 2073

多线程_并发_同步_synchronized方法_synchronized块

package com.sxt.syn; /** * 线程安全: 在并发时保证数据的正确性、效率尽可能高 * synchronized * 1、同步方法 * 2、同步块 * @author * */ public class SynTest01 { public static void main(String[] args) { //一份资源 SafeWeb12306 ...

weixin_43003240的博客 355

IIC协议常见误区解析:从时序图到实际波形(附逻辑分析仪实测)

本文深入解析IIC协议在实际应用中的常见误区,从理想时序图到逻辑分析仪实测波形的差异,揭示通信故障的根本原因。通过硬件设计优化、软件时序调优和高级调试技巧,帮助开发者有效规避IIC通信中的隐形陷阱,提升系统稳定性。

weixin_28738397的博客 370

基于泰勒展开改进的物理信息神经网络

基于泰勒展开改进的物理信息神经网络

天天酷科研的博客 504

多线程的基础知识以及应用

什么是多线程、创建线程的三种方式、守护线程、线程的生命周期、线程的安全问题、线程池的使用

m0_68201836的博客 757

Qt基础之十九:进程与QProcess

进程就是一个程序的执行实例,也就是正在运行的程序。对操作系统来说,进程就是一个担当分配系统资源CPU时间、内存的实体。在Qt 中,我们使用QProcess来表示一个进程。这个类可以允许我们的应用程序启动一个新的外部程序,并且与这个程序进行通讯。当外部程序开始启动时,QProcess的状态为Starting;外部程序已经启动时,QProcess的状态为Running,并发送started()信号;当外部层序退出了,QProcess的状态为NotRunning(初始状态),并发送finished()信号。

草上爬的博客 1万+

Android多线程:你必须要了解的多线程基础知识汇总

前言 多线程的应用在开发中非常常见 今天,我将献上一份全面 & 详细的多线程基础知识汇总,希望你们喜欢。 目录 1. 线程 - 介绍 1.1 定义 一个基本的CPU执行单元 & 程序执行流的最小单元 比进程更小的可独立运行的基本单位,可理解为:轻量级进程 组成:线程ID + 程序计数器 + 寄存器集合 + 堆栈 注:线程自己不拥有系统资源,与其他线程共享进程所拥有的全...

Carson带你学Android 5257

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Java多线程基础知识总结

<-----------------------------------------廖雪峰学Java-----------------------------------------> 目录1. 多线程基础知识2. 创建多线程3. 线程状态4. 中断线程5. 守护线程6. 线程同步7. 同步方法8. 死锁9. 使用wait和notify10. 使用ReentrantLock11. 使用Condition12. 使用ReadWriteLock13. 使用StampedLock14. 使用Concu

Pinkgranite86的博客 2721

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Java多线程:多线程基础知识

Java多线程:多线程基础知识 转载:https://mp.weixin.qq.com/s/eL401F9aOUIbBaT6tOhWPg 转载理由:看看理论

Object的博客 143

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

多线程的一些基础知识

前言 本文中包括多线程的一些基础知识,参考了一些文档和书籍,自己总结出来的常见的问题,以及其他优秀博文的链接。 1.线程的6个状态 https://blog.youkuaiyun.com/xiamiflying/article/details/82903361 1.1 初始态( NEW) 创建一个 Thread对象,但还未调用start()启动线程时,线程处于初始态。运行态( RUNNABLE),在Java中...

qq_34408516的博客 279

Java多线程基础知识

这是我再次学习多线程知识的一个总结,对于刚刚接触的学习者是比较友好易懂的,便于快速的理解和掌握。

gldzzznb的博客 3544

多线程的基础知识(必看)

多线程的基础知识 目录 什么是多线程? 为什么要用多线程? 什么场景会用到多线程? 多线程的局限性 什么是多线程? 多线程指的是在一个进程中运行多个线程。如果一个程序允许运行多个线程,那么它就是多线程程序。 例子1: 房子:进程 房子里的人:线程 客厅:公共空间(共享内存) 独立房间:线程的独享空间(独享内容) 花园浇花:线程的合作 例子2: 大火锅一个人吃,单进程单线程。 大火锅...

qq_41998273的博客 572

多线程基础知识

2.锁的释放上, synchronized - 获取锁的线程执行完同步代码,则直接释放锁 - 线程执行同步代码时发生异常,则JVM会让线程释放锁 Lock锁 - 在finally中调用unlock()进行释放锁,确保加锁次数和释放次数一样,不然很容易造成线程死锁。3.锁的获取上, synchronized 获取锁,线程A持有对象锁,线程B在等待对象锁, 此时线程A执行任务出现sleep阻塞不释放对象锁,线程B则会一直进入等待状态;5.锁的类型上, synchronized 可重入锁、不可中断锁、非公平锁;

m0_74419145的博客 899

C#中的多线程 - 基础知识

来源: C#中的多线程 - 基础知识 简介及概念 C# 支持通过多线程并行执行代码,线程有其独立的执行路径,能够与其它线程同时执行。 一个 C# 客户端程序(Console 命令行、WPF 以及 Windows Forms)开始于一个单线程,这个线程(也称为“主线程”)是由 CLR 和操作系统自动创建的,并且也可以再创建其它线程。以下是一个简单的使用多线程的例子: 所有示例都假...

weixin_30515513的博客 128

Java多线程--基础知识

本文介绍Java多线程的基础知识。包括:多线程同步的实现方式,死锁产生的条件,如何避免死锁。 多线程同步的方案 方式 优点 缺点 使用场景 synchronized 使用简单;CPU占用低 响应缓慢(并发性能差);不灵活。 并发量低;大的代码块 同步方法/代码块 并发集合(List,Map) 例:ConcurrentHashMap等 并发性能高 ...

IT利刃出鞘的博客 3847

Java中的多线程基础知识

JavaSE回顾-多线程基础知识整合 多线程 基本概念 程序(program) 进程(process) 线程(thread) Java中的线程 多线程的用处 时间片 并行和并发 同步和异步 临界区 阻塞和非阻塞 问题引入 多线程的实现方式 方式一: 继承Thread类 方式二:实现Runnable接口(常用,优点多) 为什么实例效果不明显? 多线程的两种实现方式的区别 匿名内部类实现线...

胡啊呦的博客 460
上一篇: 安卓开发中ListView的用法
下一篇: 重载Overload和重写Override的区别
Keyman_Li
博客等级 码龄8年 1粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值