精华内容
下载资源
问答
  • 串行和并发

    2019-09-11 09:47:21
    串行和并发 1、串行 多任务按照顺序依次执行 ,就好比一条单行道,里面有很多车,只要前车不前进,后面的车始终会被阻塞在那。 2、并发 多任务同时进行。 好比一条路有多条道,就可以同时通行多辆车。 3、进程线程...

    串行和并发

    1、串行

    多任务按照顺序依次执行 ,就好比一条单行道,里面有很多车,只要前车不前进,后面的车始终会被阻塞在那。

    2、并发

    多任务同时进行。 好比一条路有多条道,就可以同时通行多辆车。

    3、进程和线程

    线程安全: 单线程运行结果和多线程运行结果一致,安全,反之,则不安全

    线程创建的方法: ①继承Thread ②实现Runnable 三实现callable接口

    线程创建:Thread thread = new Thread(线程,”name");

    线程开启: thread.start();

    4、线程同步

    1. 同步代码块
    2. 同步方法
    3. 同步锁
    4. volatile
    5. ThreadLocal
    6. LinkedBlockingQueue
    7. 原子操作 Atomic

    4.1同步代码块 synchronized

    1、添加对象: private Object obj = new Object();

    2、加锁(代码块) synchronized (obj) {代码块} 给对象加锁

    4.2 同步方法

    synchronized, 不写static,是使用锁对象

    4.3 同步锁 Reenreantlock

    lock() unlock()

    加同步锁 释放同步锁

    private Lock lock = new Reenreantlock(true);

    true ------------>公平锁 ,多线程公平拥有执行权

    false------------>非公平,独占,默认锁

    加锁方法: lock.lock()

    释放锁: lock.ublock()

    加try代码块在try代码块里加锁,最后在finnally里面释放锁

    注意:lock调用后,要使用unlock释放锁,不然会发生死锁

    5 小结

    ①线程安全小结

    1、synchronized : java关键字,jvm层面,无法获得锁的状态,会自动释放锁,多线程获锁需等待,可重入,不可中断,非公平锁,适用场景为代码少量的同步

    2、lock: java类,可获取锁的状态,需要在finanlly中使用unlock释放锁,容易造成死锁,lock锁在锁占用时会结束,可重入,可判断,可公平,适用场景为大量同步的代码同步问题

    ②死锁

    基本条件: 互斥 不可剥夺 忙等待 请求保持

    死锁处理: 死锁预防 死锁检测 死锁避免 有序资源分配 : 同类资源一次申请完,不同类依次申请 ;银行家算法

    更多详情

    设置为vip可见的都可访问下面链接地址,即可观看原文
    更多详情请访问: juntech

    展开全文
  • 并发的目的是为了让程序运行的更快,但是,并不是启动更多的线程就能让程序最大限度的并发执行,下面这个例子就是证明并发一定快吗? package com.itcorey.Thread; import java.io.Serializable; /** * @Classname ...

    并发的目的是为了让程序运行的更快,但是,并不是启动更多的线程就能让程序最大限度的并发执行,下面这个例子就是证明并发一定快吗?

    package com.itcorey.Thread;
    
    import java.io.Serializable;
    
    /**
     * @Classname concurrentTest
     * @Description 多线程一定快吗?
     * @Date 2020/5/21 18:32
     * @Created by corey
     */
    public class concurrentTest {
    
        private static final long count = 10000;
    
        public static void main(String[] args) throws Exception {
            //并发
            concurrentcy();
            //串行
            Serial();
        }
    
        private static void concurrentcy() throws Exception {
            long start = System.currentTimeMillis();
            Thread thread = new Thread(new Runnable() {
                @Override
                public void run() {
                    int a = 0;
                    for (long i = 0; i < count; i++) {
                        a += 5;
                    }
                }
            });
            thread.start();
            ;
            int b = 0;
            for (long i = 0; i < count; i++) {
                b--;
            }
            long time = System.currentTimeMillis() - start;
            thread.join();
            System.out.println("concurrentcy==并发"+time+"ms,b="+b);
        }
    
        private static void Serial() {
            long start = System.currentTimeMillis();
            int a  = 0;
            for (long i = 0;i< count;i++){
                a+=5;
            }
            int b = 0;
            for (long i = 0;i<count;i++){
                b--;
            }
            long time = System.currentTimeMillis() - start;
            System.out.println("Serial==串行:"+time+"ms,b"+b+",a="+a);
        }
    
    
    }
    

    首先执行的是1万次:
    在这里插入图片描述
    并发1s 串行0s ----->并发比串行慢

    第二次 10万
    在这里插入图片描述
    串行2s 并发9s -----并发比串行慢

    第三次 100万
    在这里插入图片描述串行4s 并发12s -----并发比串行慢

    第四次10000000万数据的时候
    在这里插入图片描述
    串行11s 并发14s -----并发比串行慢

    第五次一亿次
    在这里插入图片描述
    串行72s 并发48s ----串行比并发差不多慢一倍

    总结一下:当并发执行累加操作不超过百万次的时候,速度比串行化累计操作要慢,当上了亿级数据量后,就会快很多,这是因为线程有创建和上下文切换的开销

    展开全文
  • requests发送请求是串行的,即阻塞的。发送完一条请求才能发送另一条请求。 为了提升测试效率,一般我们需要并行发送请求 这里可以使用多线程,或者协程,gevent或者aiohttp,然而使用起来,都相对麻.

    1、安装时候报错解决

    安装报错解决方法

    pip install requests报错的解决

    安装方式:

    pip install requests -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com

     

    2、

    requests发送请求是串行的,即阻塞的。发送完一条请求才能发送另一条请求。

    为了提升测试效率,一般我们需要并行发送请求

    这里可以使用多线程,或者协程,gevent或者aiohttp,然而使用起来,都相对麻烦。

    grequests是K神基于gevent+requests编写的一个并发发送请求的库,使用起来非常简单。

    安装方法: pip install gevent grequests

    项目地址:https://github.com/spyoungtech/grequests

     

    import grequests
    req_list = [ 
    # 请求列表
     
    grequests.get('http://httpbin.org/get?a=1&b=2'),
     
    grequests.post('http://httpbin.org/post', data={'a':1,'b':2}),
     
    grequests.put('http://httpbin.org/post', json={'a': 1, 'b': 2}),
    ]
    res_list = grequests.map(req_list) 
    # 并行发送,等最后一个运行完后返回
    print(res_list[0].text)


    在批量发送请求时难免遇到某个请求url无法访问或超时等异常,grequests.map()方法还支持自定义异常处理函数,示例如下
    import grequests
    def err_handler(request, exception):
     
    print("请求出错")
    res_list = [
      grequests.get(
    'http://httpbin.org/delay/1', timeout=0.001)# 超时异常
     
    grequests.get('http://fakedomain/')# 该域名不存在
     
    grequests.get('http://httpbin.org/status/500'# 正常返回500的请求
    ]
    res_list = grequests.map(res_list
    , exception_handler=err_handler)
    print(res_list)

     

    grequests和requests性能对比

    串行100次和并发100次

     

    import requests
    
    import time
    
    start = time.time()
    
    res_list = [requests.get('http://mrdoc.zmister.com') for i in range(100)]
    
    print(time.time()-start)
    
    
    
    
    
    import grequests
    
    import time
    
    start = time.time()
    
    req_list = [grequests.get('http://mrdoc.zmister.com') for i in range(100)]
    
    res_list = grequests.map(req_list)
    
    print(time.time()-start)
    展开全文
  • 1、并行和串行类似与串联电路并联电路,并行就是多线程各执行哥的互补干扰,串行就是前面的没执行后面的不会执行 2、并发在共享资源处串行,其它时候并行

    1、并行和串行类似与串联电路和并联电路,并行就是多线程各执行各的互补干扰,串行就是前面的没执行后面的不会执行
    2、并发在共享资源处串行,其它时候并行

     

    展开全文
  • 串行并发、并行的区别以及坑 串行并发、并行的区别以及坑 # 将应用程序对硬件资源的竞态请求变得有序化 ''' 串行: 一个完完整整的执行完了再执行下一个. 并发: 看起来是同时运行的 并行: 真正做到了同时...
  • 同步、异步: 指的是能否开启新的线程。...并发和并行其实是异步线程实现的两种形式。并行其实是真正的异步,多核CUP可以同时开启多条线程供多个任务同时执行,互不干扰。但是并发就不一样了,是一个伪异...
  • * @description ConcurrencyTest:串行和并发执行累加操作的时间 * @date 2019/9/23 10:41 **/ public class ConcurrencyTest { private static final long count = 100000001; public static void main...
  • 介绍GCD?Grand Central Dispatch (GCD) 是 Apple 开发的一个多核...GCD 是一个替代诸如 NSThread, NSOperationQueue, NSInvocationOperation 等技术的很高效强大的技术。任务队列看下最简单的GCD异步把任务加入全
  • 比较串行和并发执行哪个效率更高。 并发执行 相对于 串行 时间节约 44% 左右。 并没有有的人一开始想的 50%,是因为线程的创建销毁以及线程的调度都是有开销的。 public class ThreadDemo2 { private static long ...
  • 原来对这个一直不是区别的开,看了各位大佬的论坛,总结一下自己的理解吧。 1、串行就相当于一个大任务拆解成很多小任务,但是只能一个一个按顺序完成(前一个小任务没完成不能操作下一个)。 2、并行就相当于这些小...
  • 并发和串行决定了任务的执行方式 并发: 多个任务并发(同时)执行 串行: 一个任务执行完毕后,再执行下一个任务   3.串行队列 GCD中获得串行有2种途径 (1)使用dispatch_queue_...
  • 1.串行和并行 串行是指一个一个的做,并行是指多个一起做,如下图所示的传输案例,一个数据块一个数据块传输称为串行传输,多个数据块一起传输称为并行传输。 2.并发和并行 (1).并发 多个线程在一个处理器上交替...
  • 串行并发,并行

    2018-10-30 07:21:00
    三者概念对比? 串行就是按照一定顺序,...软件角度三者区别,以及软件实现并发的方式,及是否是完全优势? 并发可以认为是串行的反面,通常可以提高处理任务的效率,而并行则可以认为是并发的极致。因为在并发...
  • 通过一个生活中的例子,生动的介绍了什么是串行并发、并行。
  • 串行并发,并行。

    2020-10-12 14:54:18
    并行,串行并发区别: 假如有个桥。 假设1: 这个桥比较脆弱,只能承受一个人的重量,而桥的旁边有个休息区则不限重量,走累了可以随时停下来往右一靠,把桥让出给别人。 那么两个人AB要同时过桥就应该: A先...
  • 串行、并行和并发

    2020-01-18 14:28:27
    串行、并行和并发 并行和并发 并发:1.一个处理器。2.逻辑上的同时运行 并行:2.多个处理器。2.物理上的同时运行 并发:一个咖啡机,交替 并行:多个咖啡机 并行:真正的“同时”运行,在同一时刻,有...
  • 串行并发与并行

    千次阅读 多人点赞 2019-05-06 22:50:53
    串行 多个任务,执行时一个执行完再执行另一个。 比喻:吃完饭再看视频。 并发 多个线程在单个核心运行,同一时间一个线程运行,系统不停切换线程,看起来像同时运行,实际上是线程不停切换。 比喻: ...
  • 不考虑I/O,执行任务相同的情况下,并发要比串行多消耗上下文切换的时间,因此单线程比多线程要快。上面这种情形(没有I/O)或者I/O较少的情况,我们称之为计算密集型(CPU-bound)任务,这种任务适合单线程。 与...
  • 串行和并发和并行指的是任务的执行方式。串行:按顺序执行任务并发:cpu快速切换线程,看起来似乎像并行,其实是伪并行并行:同时执行多个任务同步:没有开启新的线程异步:开启了新的线程...
  • CPU、核心,进程、线程,串行并发、并行
  • 你吃饭吃到一半,电话来了,你一直到吃完了以后才去接,这就说明你不支持并发也不支持并行。 你吃饭吃到一半,电话来了,你停了下来接了电话,接完后继续吃饭,这说明你支持并发。...并发就是同步的串行,...
  • 并发串行

    2019-07-02 21:17:00
    目录 并发编程 并发串行 学习并发的目的 如何实现并发 进程程序 多道技术 一个进程的三种操作 并发重要概念 PIDPPID join的使用 进程对象常用属性 ...
  • GCD串行并发队列

    2017-12-14 03:04:49
    学习完本篇,您会对以下知识...所以,请大家记住了:不管是串行队列(SerialQueue)还是并发队列(ConcurrencyQueue),都是FIFO队列。也就意味着,任务一定是一个一个地,按照先进先出的顺序来执行。 **串行队列:*...
  • node_serial_reader 从 rpi 串行读取并发送到 unix 套接字
  • 并发执行是多道程序系统中多个程序(逻辑上互相独立)或者一个程序中的多个程序段在执行的过程当中,时间互相重叠,一个程序执行没结束,另一个已经开始。并行执行是指一组程序按照独立的,不同步的速度执行,时间上...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 133,716
精华内容 53,486
关键字:

串行和并发的区别