多线程基本概念

1.同步&异步

同步和异步通常用来形容一次方法的调用。

同步方法一旦开始调用,调用者必须等待调用方法的返回,才能继续下面的操作。

异步方法更像一次消息的传递,不必等待调用方法的返回,一旦调用,立即返回,继续下面的操作,被调用的方法在另外一个线程中执行。

2.并发&并行

并发和并行这两个概念比较容易混淆,他们都表示两个或多个任务一起执行,但是偏重点不同。并发偏重于多个任务交替执行,而多个任务间还可能是串行的,而并行才是真正意义上的“同时执行”。

严格意义上讲,并行的多个任务是真实的同时执行,而对于并发来讲,这个过程只是交替的,一会执行任务A,一会又执行任务B,系统会在A和B之间不停的切换,但对于外部观察者来说,即使多个任务之间是串行的,也会造成并行的错觉。

举个例子,古人云“食不言,寝不语”中的上半句,意思是说吃饭的时候不能说话,这里我们把吃饭和说话当做任务A和任务B,在我们现在的生活当中,平时聚餐大家都是边吃边说,就是任务A和B在交替串行,这就是并发。

还有我们在旅游时,一边走路一边看风景,这里走路和看风景就是两个不同的任务,我们“边走边看”,其实就是并发,当我们做到缆车中行进的时候,这个时候“走路”和“看风景”就是并行了。

3.临界区

临界区用来表示一种共享资源或共享数据,可以被多个线程使用,但是每一次,只能有一个线程使用它,当临界区的资源被一个线程占用时,其他线程要使用临界区的数据,必须等待。

比如,办公室中的打印机就好比临界区,两个员工同时打印文件,只能有一个先打印,另一个后打印,对于打印机而言,不可能同时打两份文件。

4.阻塞&非阻塞

阻塞和非阻塞表示多线程间的相互影响,比如A线程占用了临界区的资源,在释放资源前,B和C线程需要这个临界区的资源的时候,就必须等待,等待会导致线程挂起,这就是阻塞。非阻塞刚好相反,A、B、C三个线程之间不会互相妨碍

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 多线程的优点 资源利用率更好(等待IO的时间) 程序设计在某些情况下更简单(一个线程对应一个任务) 程序相应更快(...
    进击的勇士阅读 341评论 0 0
  • 多线程:多线程可以提升程序运行的效率,能够同时处理多种不同的任务,避免处理一个任务的同时搁置其他任务,造成程序卡住...
    letaibai阅读 287评论 0 0
  • 学习多线程的目的:就是将耗时操作放到后台去执行。 基本概念进程• 进程是指在系统中正在运行的一个应用程序• 每个进...
    6ffd6634d577阅读 608评论 0 1
  • 打开窗户,一股寒气悄然袭来。 窗外的凉,掠过手臂的肌肤;在细小的汗毛间穿梭,冰冷了手指间;转个弯在脸上留下轻轻一吻...
    星若懒懒阅读 285评论 4 2
  • 如果别人问家在何方?不知道你们怎么回答,但对于我来说,家不仅仅是乡里那栋空空的房子,这里更应该也有你挚爱的亲人,爸...
    子木_阅读 527评论 2 2