多线程的简单演示

Bigberg Bigberg     2022-09-29     223

关键词:

一、前言

  我们知道单核cpu同时只能执行一个任务。如果在一个单核cpu的电脑上,我们可以同时登入qq、听音乐或者写文档等,给我们的感觉它们就是同时在进行的。这是由于cpu的分时技术,使它不断的进行上下文的切换,根据任务的优先级不停的在各个任务间切换执行。而且由于cpu运行太快,我们根本感觉不到它在切换任务,所以就给了我们同时在执行多个任务。

二、简单的多线程并发

  2.1 创建线程 

import threading   # 线程模块


# 定义每个线程要运行的函数
def run(n):
    print(‘task‘, n)


if __name__ == ‘__main__‘:

    # 生成一个线程实例 , 参数为 元组形式
    t1 = threading.Thread(target=run, args=("t1",))
    # 生成另一个线程实例 , 参数为 元组形式
    t2 = threading.Thread(target=run, args=("t2",))

   # 启动线程
    t1.start()
    t2.start()    

  2.2 对比运行

  好像运行结果除了同时出来外,没什么特别的,我们稍稍修改一下

  

import threading
import time


def run(n):
    print(‘task‘, n)
    time.sleep(2)

if __name__ == ‘__main__‘:

    t1 = threading.Thread(target=run, args=("t1",))
    t2 = threading.Thread(target=run, args=("t2",))
    # t1.start()
    # t2.start()

    run(‘t1‘)
    run(‘t2‘)

  我们让程序sleep一会,就能很明显看出并发运行的效果了

 三、继承式调用

  上面使用线程方法可以被称为直接调用,而继承式调用需要我们自己写一个类,继承threading.Thread

  方法:

  1. 先定义一个类,继承threading.Thread
  2. 要继承父类的构造函数
  3. 定义一个运行的函数,必须是 run()
import threading
import time


class MyThread(threading.Thread):

    def __init__(self, n):
        super(MyThread, self).__init__()
        self.n = n

    def run(self):
        print(‘task‘, self.n)
        time.sleep(2)

if __name__ == ‘__main__‘:
    t1 = MyThread(1)
    t2 = MyThread(2)

    t1.start()
    t2.start()

  

用java多线程编写哲学家就餐程序利用多线程技术编写哲学家就餐程序,使之在运行时能演示产生死锁的情况,

好的话我可以给加分的、。。。。利用多线程技术编写哲学家就餐程序,使之在运行时能演示产生死锁的情况,也能演示采用死锁防止方法后不产生死锁的情况。 程序要采用简单的控制台界面,运行后在屏幕上显示功能菜单,... 查看详情

c语言多线程演示(代码片段)

一.线程简介线程:线程是程序中的一个执行流,每个线程都有自己的专有寄存器(栈指针、程序计数器等),但代码区是共享的,即不同的线程可以执行同样的函数。多线程:多线程是指程序中包含多个执行流,... 查看详情

c语言多线程演示(代码片段)

一.线程简介线程:线程是程序中的一个执行流,每个线程都有自己的专有寄存器(栈指针、程序计数器等),但代码区是共享的,即不同的线程可以执行同样的函数。多线程:多线程是指程序中包含多个执行流,... 查看详情

ubuntu下多线程简单的线程锁抢门票问题(代码片段)

该小程序创建了4个线程作为窗口进行演示抢票,程序中简单的使用pthread_mutex_lock与pthread_mutex_unlock:main.c:1#include<stdio.h>2#include<pthread.h>3#include<stdlib.h>4#include<string.h>5#include<sched.h> 查看详情

java---多线程篇(代码片段)

多线程进程与线程并行与并发多线程的创建和启动Thread类创建线程的两种方式方式一:继承Thread类方式二:实现Runnable接口指定线程的名称,并获取继承方式和实现方式的联系和区别Thread类相关的方法1线程的优先级Thr... 查看详情

多线程async&await

  .net4.0的Task已经让我们可以非常简单地使用多线程,并且可以有返回值,也可以支持线程的取消等操作,可谓已经很强大了。但.net4.5为我们带来了async&await,使得实现多线程的写法更简单,更优美,更符合线性思维。下面... 查看详情

java多线程--线程休眠

....sleep()介绍sleep()定义在Thread.java中。sleep()的作用是让当前线程休眠,即当前线程会从“运行状态”进入到“休眠(阻塞)状态”。sleep()会指定休眠时间,线程休眠的时间会大于/等于该休眠时间;在线程重新被唤醒时,它会由“阻... 查看详情

c语言多线程演示(代码片段)

一.线程简介线程:线程是程序中的一个执行流,每个线程都有自己的专有寄存器(栈指针、程序计数器等),但代码区是共享的,即不同的线程可以执行同样的函数。多线程:多线程是指程序中包含多个执行流,... 查看详情

jmeter实例演示

...需求,比如:需不要登录?需不需要监视服务器性能?多线程还是多循环?需不需根据流量回放设计不同接口的请求数?有了目标后,可根据需求设计对应的测试方案。1、 为了简单展示jmeter的使用,本实例设计如下:需求... 查看详情

初识多线程(代码片段)

初识多线程前言一、操作系统1.冯诺依曼体系结构2.操作系统二、进程2.1操作系统管理进程2.2进程的组成2.3时间片2.4并行和并发2.5内核态和用户态2.6进程状态三、多线程3.1线程是什么?3.2进程和线程的区别3.3Java实现多线程3.4... 查看详情

java示例代码_演示java多线程可见性问题

java示例代码_演示java多线程可见性问题 查看详情

c++多线程学习笔记:互斥量概念和用法死锁演示及解决

文章目录​​1.互斥锁(mutex)基本概念​​​​2.互斥量的用法​​​​(1)lock(),unlock()​​​​(2)用lock和unlock改写上一节最后的代码​​​​(3)std::lock_guard类模板​​​​3.死锁​​​​(1)死锁演示​​​​(2)... 查看详情

多线程线程状态和案例演示(代码片段)

线程的几种状态初始(NEW):新创建了一个线程对象,但还没有调用start()方法运行(RUNNABLE):Java线程中将就绪(ready)和运行中(running)两种状态笼统的称为“运行”阻塞(BLOCKED):表示线程阻塞于锁等待(WAITING):进入该... 查看详情

java多线程实现的三种方式(代码片段)

文章目录实现多线程方式一:继承Thread类方法介绍实现步骤代码演示思考问题实现多线程方式二:实现Runnable接口Thread构造方法实现步骤代码演示实现多线程方式三:实现Callable接口方法介绍实现步骤代码演示三种实现方式... 查看详情

java多线程的创建

前言:虽然java的API中说创建多线程的方式只有两种(Therearetwowaystocreateanewthreadofexecution),分别是继承Thread类创建和实现Runnable接口创建,在上一篇博文中演示了这两种,详见,但是JDK5.0以后新增了两种,分别是实现Callable接口... 查看详情

一起talkandroid吧(第三百七十一回:多线程之线程池扩展)(代码片段)

...看官们,大家好,上一回中咱们说的是Android中多线程之线程池回顾的例子,这一回中咱们介绍的例子是多线程之线程池扩展。闲话休提,言归正转。让我们一起TalkAndroid吧!使用步骤看官们,我们在上一章回中... 查看详情

c++11多线程互斥量的概念用法死锁演示及解决详解

目录1.互斥量(mutex)的基本概念2.互斥量的用法2.1lock()、unlock()2.2std::lock_guard类模板3.死锁3.1死锁演示3.2死锁的一般解决方案3.3std::lock()函数模板3.4std::lock_guard()的std::adopt_lock参数1.互斥量(mutex)的基本概念保护共... 查看详情

windows多线程开发之并发线程程序研究

做为一名分布式服务器开发人员,在服务器开发领域、多线程开发和并发编程方面有自己的心得和经验,愿意分享给同仁,今讨论下Windows下线程并发程序开发。下面用用两个线程实现一个简单的数组排序,演示了线程的基本用... 查看详情