精华内容
下载资源
问答
  • js单线程java多线程同步与异步

    千次阅读 2017-04-12 18:13:04
    写这篇博客源于想对比一下单线程js和多线程java两种语言的区别。  定义区:  单线程:只能执行一个任务,只有在完成执行后,才能继续执行其他的任务。  多线程:有多个线程,可以同时执行多个任务。  同步:...

           写这篇博客源于想对比一下单线程js和多线程java两种语言的区别。

          定义区:

               单线程:只能执行一个任务,只有在完成执行后,才能继续执行其他的任务。

               多线程:有多个线程,可以同时执行多个任务。

               同步:当发送一个请求后,必须等待响应之后才能继续执行后面的程序。

               异步:但发送一个请求后,可以不需要等待响应,可以直接执行后续的程序。


           js中如果触发多个事件(事件驱动),那么要按照事件顺序逐个执行,这与java中多线程的各个单独线程的执行情况是一致的,在js中值得一提的是Ajax 技术,这是个异步方法,即在Ajax发送一个请求之后,我可以继续执行后面的程序,包括click等事件也是异步的,直到响应后,再将callback放入等待队列中。对于一整个Ajax来说,可以吧它当作是一个同步的,只有等请求得到响应之后,我才能执行Ajax的callback。

          java中如果有多个任务,可以将他们分配到不同的线程中去执行,实现并发,每个单独线程中同步和异步情况和js中单线程情况是一致的。但多线程就存在一个资源共享的问题,就关于线程安全的问题,这是另一个问题,不予赘述。

        

       

    展开全文
  • delphiXE关于线程和多线程、线程的同步与异步执行 一、最好的参照案例 {$BDS}\source\fmx\FMX.Helpers.Android.pas 如下四个独立方法: type TMethodCallback = procedure of object; TCallBack = reference ...

    delphiXE关于线程和多线程、线程的同步与异步执行

    一、最好的参照案例

    {$BDS}\source\fmx\FMX.Helpers.Android.pas

    如下四个独立方法:

    type
      TMethodCallback = procedure of object;
      TCallBack = reference to procedure;

    procedure CallInUIThread(AMethod: TMethodCallback); overload;  //:在UI中调用线程并回调某个对象或类的事件:在自己的单元文件重新实现
    procedure CallInUIThread(AMethod: TCallBack); overload; //:在UI中调用线程并回调某个匿名过程:在自己的单元文件重新实现
    procedure CallInUIThreadAndWaitFinishing(AMethod: TMethodCallback); overload; //:在UI中调用线程且等待其结束并回调某个对象或类的事件:在自己的单元文件重新实现
    procedure CallInUIThreadAndWaitFinishing(AMethod: TCallBack); overload; //:在UI中调用线程且等待其结束并回调某个匿名过程:在自己的单元文件重新实现

    implementation

    use FMX.Types, System.Generics.Collections,
      System.SyncObjs, System.Rtti, System.Classes, FMX.Consts;

    var
        //ActiveJavaRunnables: TThreadList<TRunnable>;  //改为:
        ActiveThreadsRunnables: TThreadList<TRunnable>;  //:活动的能运行的线程列表:uses System.Generics.Collections


    initialization
      ActiveJavaRunnables := TThreadList<TRunnable>.Create;

    finalization
      ActiveJavaRunnables.DisposeOf;
    end.

    二、将其稍作修改,变成你自己的通用线程执行类

    三、方法:

    1、简单的线程同步:

    1.1、当前线程,简单的线程同步

        try
          //在这里写i的数据获取及处理:......
        finally
          TThread.Synchronize(nil,
            // var :你的同步中间变量;   
          procedure begin
              Memo1.Lines.Add( LResp.ContentAsString( System.SysUtils.TEncoding.UTF8) );
                //LResp.ContentAsString(System.SysUtils.TEncoding.UTF8);
                //Memo1.Lines.Add(LRespoContent.DataString); //:乱码转换下 ::这样也可以
          end );  //:与UI交互,信息量少,可以这样简单短暂地阻塞一下UI;
              //:若信息量大,请用异步方式处理完数据,得到通知后再加载UI

          或用队列同步:    

          TThread.Queue(nil,
          // var :你的队列中间变量;   
          procedure begin
              //在这里写您与UI界面元素的交互代码:
          end;

    1.2、当前线程的匿名线程,简单的线程同步

          TThread.CreateAnonymousThread (
          procedure
              // var :你的匿名线程中间变量; 
          begin
              //在这里写您与UI界面元素的交互代码:
          end;

    1.3、当前线程的子线程,简单的线程同步

          var LSubAnonymousThread :TAnonymousThread;

          LSubAnonymousThread := TAnonymousThread.Create(
          procedure
              // var :你的匿名线程中间变量; 
          begin
              //在这里写您与UI界面元素的交互代码:
          end;

    2、其它,见本博客相关文章:

        2.1、Delphi中的匿名方法及异步任务:

            https://blog.csdn.net/pulledup/article/details/102675723

        2.2、PPL并行编程库01-概念

            https://blog.csdn.net/pulledup/article/details/102063074

        2.3、PPL并行编程库02-多任务

           https://blog.csdn.net/pulledup/article/details/102068352

        2.4、PPL并行编程库03-单任务、异步多任务、同步多任务

            https://blog.csdn.net/pulledup/article/details/102081210

        2.5、delphi线程监视器System.TMonitor  : 若存在线程嵌套 或 与UI交互时有时需要强制同步:

            https://blog.csdn.net/pulledup/article/details/105175193

        2.6、请求远程数据的同步及异步处理1:

            delphi Restful:客户端实现的四种方式及其比较:  https://blog.csdn.net/pulledup/article/details/104132753

        2.7、请求远程数据的同步及异步处理2: 

            案例:delphi判断网络状态是否正常:  https://blog.csdn.net/pulledup/article/details/104584564

        2.8、多线程同步对象及其等待结果

            https://blog.csdn.net/pulledup/article/details/106136991

        2.9、再谈delphi XE多线程同步对象及其管理二

            https://blog.csdn.net/pulledup/article/details/106631889

    喜欢的话,就在下面点个赞、收藏就好了,方便看下次的分享:

     

    展开全文
  • 关于多线程中同步异步的理解

    千次阅读 2016-08-15 22:30:57
    线程异步:访问资源时在空闲等待时可以同时访问其他资源,实现多线程机制 说起来比较抽象,我用代码尝试了一下//以异步的方式提交队列 -(void)async { dispatch_async(q1, ^{ for (int i = 0; i ; i ++) {

    线程同步:就是多个线程同时访问同一资源,必须等一个线程访问结束,才能访问其它资源,比较浪费时间,效率低
    线程异步:访问资源时在空闲等待时可以同时访问其他资源,实现多线程机制
    说起来比较抽象,我用代码尝试了一下

    //以异步的方式提交队列
    -(void)async
    {
        dispatch_async(q1, ^{
            for (int i = 0; i < 10; i ++) {
                NSLog(@"q1=====%d",i);
            }
        });
    }
    //以同步的方式提交队列
    -(void)sync
    {
        dispatch_sync(q1, ^{
            for (int i = 0; i < 10; i ++) {
                NSLog(@"q2-----%d",i);
            }
        });
    }

    先用以异步的方式提交队列

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
        q1 = dispatch_queue_create("q1", DISPATCH_QUEUE_SERIAL);
        [self async];
        //[self sync];
        NSLog(@"1111");
        return YES;
    }

    输出如下
    2016-08-15 22:21:06.341 TPZhihuDailyPurify[2076:1215297] q2—–8
    2016-08-15 22:21:06.341 TPZhihuDailyPurify[2076:1215297] q2—–9
    2016-08-15 22:21:06.341 TPZhihuDailyPurify[2076:1215297] 1111
    2016-08-15 22:21:06.340 TPZhihuDailyPurify[2076:1215902] q1=====7
    2016-08-15 22:21:06.342 TPZhihuDailyPurify[2076:1215902] q1=====8
    2016-08-15 22:21:06.343 TPZhihuDailyPurify[2076:1215902] q1=====9
    当然这个1111的位置每次运行都可能不一样因为系统是在空闲时访问其它资源,也就是程序继续往下运行,输出1111。
    再用以同步的方式提交队列

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
        q1 = dispatch_queue_create("q1", DISPATCH_QUEUE_SERIAL);
        //[self async];
        [self sync];
        NSLog(@"1111");
        return YES;
    }

    输出如下
    016-08-15 22:26:09.541 TPZhihuDailyPurify[2099:1246463] q2—–5
    2016-08-15 22:26:09.541 TPZhihuDailyPurify[2099:1246463] q2—–6
    2016-08-15 22:26:09.541 TPZhihuDailyPurify[2099:1246463] q2—–7
    2016-08-15 22:26:09.542 TPZhihuDailyPurify[2099:1246463] q2—–8
    2016-08-15 22:26:09.542 TPZhihuDailyPurify[2099:1246463] q2—–9
    2016-08-15 22:26:09.542 TPZhihuDailyPurify[2099:1246463] 1111
    可以看出1111总是在最后输出,因为同步必须等一个线程访问结束,才能访问其他资源,也就是程序继续往下运行。

    展开全文
  • 进程 线程 多线程 并发 同步异步

    千次阅读 2014-11-21 13:43:06
    进程 线程 多线程 并发 同步异步 很多人对进程,线程,多线程,并发,同步,异步等概念感到困惑,这都是大学没好好听课的缘故啊.咱在这里帮感到概念给感到困惑的同学复习下.

    进程 线程 多线程 并发 同步异步

    很多人对进程,线程,多线程,并发,同步,异步等概念感到困惑,这都是大学没好好听课的缘故啊.咱在这里帮感到概念给感到困惑的同学复习下.

    程序

    程序用来描述计算机所完成的独立功能,并在时间上严格地按前后次序相继地进行计算机操作序列集合,是一个静态概念。

    进程

    并发执行的程序在执行过程中分配和管理资源的基本单位.是一个动态的执行过程.

    进程的静态描述
    1. 进程控制块PCB
    2. 有关程序段
    3. 该程序员对齐进行操作的数据结构集
    进程控制块PCB

    进程控制块PCB是系统管制进程存在的唯一实体,包含以下东西

    1. 描述信息(进程名或者进程标识号, 用户名或者用户标识号, 家族关系)
    2. 控制信息(进程当前状态, 进程优先级, 程序开始地址, 各种计时信息, 通信信息)
    3. 资源管理信息(占用内存大小及管理用数据结构指针 对换或覆盖用的有关信息 共享程序段大小及起始地址 io设备的相关信息 文件系统的指针以及相关标识)
    4. CPU现场保护结构

    并发

    所谓并发执行,是为了增强计算机系统的处理能力和提高资源利用率锁采取的一种同时操作技术.

    异步

    程序中的两部分在执行上没有顺序规定

    同步

    把异步环境下的一组并发进程,因直接制约而互相发送消息而进行互相合作,互相等待,使得各进程按一定的速度执行的过程称之为进程间的同步

    死锁

    多个并发进程因竞争资源而引起的一种僵局

    线程

    线程是进程的一部分,它没有自己的地址空间,它和进程内其他的线程一起共享分配给该进程的所有资源



    展开全文
  • 线程是进程的一个执行流,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位,一个进程可以有线程线程可以并发执行,线程与同属一个进程的其他线程共享进程所拥有的全部资源。 进程...
  • 线程同步与异步

    千次阅读 2018-08-29 11:50:32
    线程同步与异步 线程 同步 (synchronized) 异步 (asynchronized) 特点 A线程要请求某个资源,但是此资源正在被B线程使用,因为同步机制存在,A线程请求不到,怎么办,A线程只能等待下去 A线程要请求...
  • 1.js中多线程-单线程, 同步-异步,阻塞-非阻塞, 回调函数的关系理解 //2018.12.12 1.多线程/单线程 简单理解为: 多线程:程序可以同一时间做几件事. 单线程:程序同一时间只能做一件事. 在...
  • Java 多线程同步异步详解

    千次阅读 2018-05-31 10:00:32
    转载自 https://www.cnblogs.com/mengyuxin/p/5358364.htmljava线程 同步与异步 线程池1)多线程并发时,多个线程同时请求同一个资源,必然导致此资源的数据不安全,A线程修改了B线程的处理的数据,而B线程又修改了...
  • Android多线程同步异步方法总结

    千次阅读 2019-02-14 10:47:24
    Android多线程同步异步方法总结 //实现网络传输,要求:【线程同步转异步】在子线程完成数据上报,当前调用线程必须等待"子线程"返回的结果后,才继续向下执行,返回 response byte数组。 一、归纳...
  • C# 多线程同步与异步的实现

    千次阅读 2012-05-07 14:59:21
    多线程是系统分配处理器时间资源的基本单元, 或者说线程是进程的基本执行单元。对操作系统而言, 其调度单元是线程。一个进程至少包括一个线程, 称之为主线程。一个进程从主线程的执行开始进而创建一个或多个次...
  • 多线程同步异步的优缺点比较

    千次阅读 2019-03-10 23:40:34
    异步的使用场景: 1、不涉及共享资源,或对共享...同步的使用场景:不使用异步的时候 同步的好处: 1、同步流程对结果处理通常更为简单,可以就近处理。 2、同步流程对结果的处理始终和前文保持在一个上下文内...
  • iOS 多线程 同步异步 串行和并行

    千次阅读 2018-07-06 18:58:38
    iOS我们常使用dispatch_queue和NSOperationQueue来实现多线程。而串行和并行、同步异步,这四个词同时出现的地方是dispatch_queue。NSOperationQueue贴心的隐藏了这些东西,已经不需要我们来操心了。所以下面会...
  • Java多线程同步异步详解

    千次阅读 2016-11-12 22:26:50
    1. 多线程并发时,多个线程同时请求同一资源,必然导致此资源的数据不安全。 2. 线程池 在WEB服务,对于web服务器的响应速度必须尽可能的快,这就容不得在用户提交请求按钮后,再创建线程提供服务。为了减少用户...
  • 1.同步与异步1.1同步多线程的环境,经常会碰到数据共享的情况,即当多个线程共同需要访问一个资源时,他们需要以某种顺序来确保该资源在某一时刻只能被一个线程使用,否则,程序的运行结果将是不可预料的,在...
  • java线程 同步与异步 线程池

    千次阅读 2012-07-18 18:31:51
    线程同步异步的概念 1)多线程并发时,多个线程同时请求同一个资源,必然导致此资源的数据不安全,A线程修改了B线程的处理的数据,而B线程又修改了A线程处理的数理。显然这是由于全局资源造成的,有时为了解决...
  • 多线程同步与单线程异步对比

    千次阅读 2016-10-24 13:49:10
    阻塞与线程
  •  线程异步:访问资源时在空闲等待时同时访问其他资源,实现多线程机制,并行执行任务 1.2.3模式  使用GCD的主队列.使用NSOperationQueue,把最大线程数(并发)设为1 1.1.1 2.OC是所有对象间的交互是如何...
  • 1. 并发:在操作系统,是指一个时间段有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行。其中两种并发关系分别是同步和互斥; 2. 互斥:进程间相互排斥的使用临界资源的现象,...
  • 线程同步与异步的最简单图解

    千次阅读 2018-02-19 12:01:40
    可以看出,所谓同步,就是每次只有一个线程能去执行,即使有的计算资源(在这里指多余的CPU)也不会去用,一次只有一个线程去用,可以看作是豪华型执行过程。注意,此时因为只有一个线程A可以执行,所以它可以任意...
  • 同步异步”这个在我们学习多线程的时候,会接触到这个概念,后面所学的一系列多线程知识运用也是以这两个点开展的。由于学习的时候囫囵吞枣,导致我对这两个概念没法准确说出定义及其区别,现在记录一下。 如果...
  • 同步:synchronized 同步的概念就是共享,如果不是共享的资源,就没有必要进行同步异步:asynchronized ...同步的目的就是为了线程安全,对于线程安全来说,需要满足两个特性: (原子性)同步 可见性
  • 同步异步多线程与事件型综述

    千次阅读 2013-04-29 16:07:51
    同步异步多线程与事件型综述作者:chszs,转载需注明。博客主页:http://blog.csdn.net/chszs首先要了解什么是阻塞和阻塞式IO。线程在执行如果遇到磁盘读写或网络通信(统称IO操作),通常要耗费较长的时间,...
  • 多线程编程--异步同步之CountDownLatch
  • 多线程同步异步

    千次阅读 2013-03-08 16:20:33
    那么既然这样,多线程还有什么意义呢? 举例来说,现在只有一个人,要做好几个任务。单线程就是,任务一个一个地做,必须做完一个任务后,再去做另一个任务。多线程就是一会做这个任务,一会做那个任务,每个任务做...
  • 1、进程和线程的概念 进程:运行的应用程序称为进程,拥有系统资源(cpu、内存) 线程:进程的一段代码,一个...多线程: 在同一应用程序有多个功能流同时执行 已经有了进程,为什么还会需要线程呢?主要原...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 252,490
精华内容 100,996
关键字:

多线程中的同步与异步