首页 > 其他分享 >认识线程,初始并发

认识线程,初始并发

时间:2022-09-25 17:56:08浏览次数:54  
标签:多个 静态 程序 并发 线程 进程 初始

线程学习

1. 什么是线程

  • 程序

    是为完成特定任务,用某种语言编写的一组指令的集合,即指一段静态的代码,静态对象

  • 进程

    是程序的一次执行过程,或是正在运行的一个程序。是一个动态的过程:有他自身的产生,存在和消亡的过程。程序是静态的,进程是动态的;进程作为资源分配的单位,系统在运行时会为每个进程分配不同的内存区域。

  • 线程

    进程可进一步细化为线程,是一个程序内部的一条执行路径。若一个进程同一时间并行执多个线程,就是支持多线程的;

    线程作为调度和执行的单位,每个线程拥有独立的运行栈和程序计数器,线程切换的开销小;

    一个进程中,多个线程共享相同的内存单元/内存地址空间,也就是说他们从同一堆中访问相同的变量和对象,这就使得线程间通信更简便、高效。但多个线程操作共享的系统资源可能就会带来安全的隐患。

2. 初识并发问题

  • 并发:一个CPU(采用时间片)同时执行多个任务。比如:秒杀,多个人做同一件事

下面代码为例,让我们了解什么是并发:

//多个线程操作一个对象
//线程不安全,数据紊乱
public class TestThread01 implements Runnable {
	//票数
    private int tkicketNum=10;
    @Override
    public void run() {
        while (true){
            if(tkicketNum<1){
                break;
            }
            System.out.println(Thread.currentThread().getName()+"拿到了第"+ tkicketNum-- +"张票");
        }
    }
    public static void main(String[] args) {
        TestThread01 testThread01 = new TestThread01();
        new Thread(testThread01,"张三").start();
        new Thread(testThread01,"李四").start();
        new Thread(testThread01,"wangwu").start();

    }
}

结果如下:

标签:多个,静态,程序,并发,线程,进程,初始
From: https://www.cnblogs.com/kulapikajy/p/16728360.html

相关文章

  • ExecutorService、Callable、Future实现有返回结果的多线程原理解析
    原创/朱季谦在并发多线程场景下,存在需要获取各线程的异步执行结果,这时,就可以通过ExecutorService线程池结合Callable、Future来实现。我们先来写一个简单的例子——publ......
  • 利用DbgHelp获取线程的栈回溯信息
     #include<iostream>#include<Windows.h>#include<process.h>#include<DbgHelp.h>#pragmacomment(lib,"Dbghelp.lib")usingstd::cout;usingstd::endl;......
  • 线程安全问题的产生条件、解决方式
    1、线程安全的产生条件■线程安全问题概念:多个线程在并发下执行,对共享数据进行访问,造成执行结果不一致的情况。线程安全产生前提:存在多个线程、并发执行(线程之间......
  • MySQL维护之连接数、线程等
    实际生产维护中可能还会查看如下内容:1、如何在MySQL中查询OS线程id(LWP轻量级线程)?OS系统提供ps-Lfpid命令查看LWP;在performance_schema.threads中有......
  • 线程同步(线程锁)
    多线程的优势在于可以同时运行多个任务(至少感觉起来是这样)但是当线程需要共享数据时,可能存在数据不同步的问题。为了避免这种情况,引入了锁的概念。1lock=threading.Lo......
  • 线程和进程的关系?js为什么是单线程的?
    一、线程是包含在进程中的,线程其实就是一个指令序列,如果加上计算机分配给它的资源(如内存等)之后就是一个进程。二、可以设想一个场景,js适用于多线程,如果几个线程同时对一个......
  • Python使用事件循环创建线程池和进程池
    1、来源参考参考官方文档示例:https://docs.python.org/3.9/library/asyncio-eventloop.html#asyncio.loop.run_in_executor2、代码示例1#-*-coding:utf-8-*-2......
  • 并发学习记录13:不可变
    问题的提出日期转换的问题在多线程的环境下做日期转换很可能出现线程安全问题:代码:@Slf4j(topic="ch.UnchangeTest01")publicclassUnchangeTest01{publicst......
  • Ubuntu 进程 线程 查看 设置(top taskset)
    目录toptop详解及使用top常用的命令tasksettaskset的基本使用1.显示某个进程(线程)运行所在的核2.设置某个进程(线程)运行的核top主要用于查看Linux系统中的所有......
  • RCC时钟初始化
    时钟树的简化版 解析以锁相环为分隔前半部分:时钟源的选择同时使能外部时钟源(HSE/HSI)、时钟源的预先值(是否除以2)、锁相环使能同时选择锁相环时钟来源、锁相环......