多线程同步和异步的方式

同步:共享资源被多个线程 调用,同步的方式有多种:(场景:卖火车票)

1 syncnizerd  关键字

2 reentrantLock 排它锁

3 volatile 关键字 修饰变量;

异步:改变线程本身的状态 ,异步方法有多种:(场景:生产者消费者模式)

1 wait notify  ,Object 的唤醒机制 ;

2 await asign ; Condition  对象的两个方法;

3 阻塞队列BolckQueue  ,它 的底层还是Condition;

jdk 5 之后为引入了自旋的概念,java.util.concurrent下的包 automic(automic:原子的,这些对象都有CAS操作,何谓CAS操作,CompareAndSet,计算机执行的一种同步) AutomicInteger ,就是一种自旋对象,用于同步 ;类似还有concurrentHashMap 用于完成同步;另外sleep();这个区别于wait notify() ; 它并没有释放锁;在jdk5,引入自旋锁,类似于实现唤醒等待机制,每隔几秒查询一次,而不用虚拟机去唤醒,减少不必要的开销

时间: 2024-10-14 01:45:29

多线程同步和异步的方式的相关文章

iOS:多线程同步加锁的简单介绍

多线程同步加锁主要方式有3种:NSLock(普通锁).NSCondition(状态锁).synchronized同步代码块 还有少用的NSRecursiveLock(递归锁).NSConditionLock(条件锁).NSDistributedLock(分布锁). 区别: NSLock和NSCondition都实现<NSLocking>协议;而synchronized(锁){….}采用同步加锁的方式实现加锁,只要锁是唯一的就可以,一般设置锁为当前对象或者类名.NSLock和NSConditio

c# socket 通信 同步的实现方式和异步实现方式的思考

socket通信的套路,无论是同步的方式或者异步的实现方式,套路总是不变的,那就是服务端开启一个线程监听客户端socket,客户端创建一个socket去连接服务端的监听端口,服务端接收这个客户端socket,在开辟一个线程负责与客户端线程通信(send receive 数据),这里有个误区,并不是监听socket与客户端socket进行通信,监听socket只是负责接收客户端连接请求,最后接收到的socket与客户端socket进行通信. 关于同步和异步的主要区别在哪里? Accept Rece

javascript同步和异步的区别与实现方式

题外话: “我最不喜欢的编程语言”排行榜第一名除了javascript别无他选 可惜的是在mobi项目的三个月除了javascript和SP就没写过其他什么.. 所以,迎难而上,该解决的一定要解决了 ------------------------------------------------------------------------------------------------------------------- javascript语言是单线程机制.所谓单线程就是按次序执行,执行

Linux多线程同步方式

当多个线程共享相同的内存时,需要确保每个线程看到一致的数据视图,当多个线程同时去修改这片内存时,就可能出现偏差,得到与预期不符合的值.为啥需要同步,一件事情逻辑上一定是有序的,即使在并发环境下:而操作系统对于多线程不会自动帮我们串行化,所以需要我们通过操作系统提供的同步方式api,结合自己的业务逻辑,利用多线程提高性能的同时,保证业务逻辑的正确性.一般而言,linux下同步方式主要有4种,原子锁,互斥量,读写锁和条件变量.下面一一介绍几种同步方式. 1. spinlock 1)  概念 spin

C语言中同步和异步的理解

现在我在main.c这个文件中,调用360浏览器. 分析过程:在my.exe里面继续打开另外一个程序,所以就涉及到:my.exe的继续执行是否要等把另外的那个程序执行完才执行呢?如果要等,就是同步:如果不用等,就是异步.这就是同步和异步的问题. 现在是要等的情况: 结果就是要等到浏览器完全打开完才会去打印nihao . 如果这样看,就会更加的清晰: 结果是: 一个一个的打开,最后才是打印nihao 如果要异步方式: 结果是: 三个浏览器几乎同时打开,同时"nihao"还会先打印出来.

同步与异步的概念

同步与异步的概念 进程同步用来实现程序并发执行时候的可再现性. 一.进程同步及异步的概念 1.进程同步:就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回.也就是必须一件一件事做,等前一件做完了才能做下一件事.就像早上起床后,先洗涮,然后才能吃饭,不能在洗涮没有完成时,就开始吃饭.按照这个定义,其实绝大多数函数都是同步调用(例如sin,isdigit等).但是一般而言,我们在说同步.异步的时候,特指那些需要其他部件协作或者需要一定时间完成的任务.最常见的例子就是 sendmessage

同步和异步的概念?

进程同步用来实现程序并发执行时候的可再现性. 一.进程同步及异步的概念 1.进程同步:就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回.也就是必须一件一件事做,等前一件做完了才能做下一件事.就像早上起床后,先洗涮,然后才能吃饭,不能在洗涮没有完成时,就开始吃饭.按照这个定义,其实绝大多数函数都是同步调用(例如sin,isdigit等).但是一般而言,我们在说同步.异步的时候,特指那些需要其他部件协作或者需要一定时间完成的任务.最常见的例子就是 sendmessage.该函数发送一个消

同步与异步的概念(转自http://blog.chinaunix.net/uid-21411227-id-1826898.html)

今天看到一篇博客介绍同步异步的,看的挺舒服的,转过来,谢谢原作者zhenhuaqin(http://blog.chinaunix.net/uid-21411227-id-1826898.html). 进程同步用来实现程序并发执行时候的可再现性. 一.进程同步及异步的概念 1.进程同步:就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回.也就是必须一件一件事做,等前一件做完了才能做下一件事.就像早上起床后,先洗涮,然后才能吃饭,不能在洗涮没有完成时,就开始吃饭.按照这个定义,其实绝大多数

ajax同步与异步的区别

jquery中ajax方法有个属性async用于控制同步和异步,默认是true,即ajax请求默认是异步请求,有时项目中会用到AJAX同步.这个同步的意思是当JS代码加载到当前AJAX的时候会把页面里所有的代码停止加载,页面出现假死状态,当这个AJAX执行完毕后才会继续运行其他代码页面假死状态解除.而异步则这个AJAX代码运行中的时候其他代码一样可以运行. ajax中async这个属性,用于控制请求数据的方式,默认是true,即默认以异步的方式请求数据. 一.async值为true (异步) 当