java 同步通信技术的应用
来源:互联网 发布:php 统计ip访问量 编辑:程序博客网 时间:2024/06/07 02:56
在线程程序开发过程中,当要考虑到并发问题时,常常需要用到同步技术,比如在开发银行转账系统或者是汽车售票系统这种对于数据的实时性和原子性有所要求的场合的时候,同步技术必不可少。
这里以同时开两个线程各自逐个打印不同的名字为例,运行程序时,若不使用同步时,可能会出现乱序的情况,使用同步则可以保证正确的打印顺序。
示例代码如下:
public class TraditionalThreadSynchronized {/** * @param args */public static void main(String[] args) {final Output output = new Output();new Thread(new Runnable() {@Overridepublic void run() {while(true){try {Thread.sleep(10);} catch (InterruptedException e) {e.printStackTrace();}output.output1("李逍遥");}}}).start();new Thread(new Runnable() {@Overridepublic void run() {while(true){try {Thread.sleep(10);} catch (InterruptedException e) {e.printStackTrace();}output.output1("张三丰");}}}).start();}}/** * ①②两方法等价 * ③④两方法等价 * @author Administrator * */class Output{// 没有使用同步public void output0(String str){int len = str.length();for (int i = 0; i < len; i++) {System.out.print(str.charAt(i));}}// ①public void output1(String str){int len = str.length();synchronized (this) {for (int i = 0; i < len; i++) {System.out.print(str.charAt(i));}System.out.println();}}// ②public synchronized void output2(String str){int len = str.length();for (int i = 0; i < len; i++) {System.out.print(str.charAt(i));}System.out.println();}// ③public static synchronized void output3(String str){int len = str.length();for (int i = 0; i < len; i++) {System.out.print(str.charAt(i));}System.out.println();}// ④public void output4(String str){int len = str.length();synchronized (Output.class) {for (int i = 0; i < len; i++) {System.out.print(str.charAt(i));}System.out.println();}}}①②③④各方法单独使用都可以实现同步,区别如下:
代码中的Output类的①②两方法是等价的,都是以Output自身作为同步锁
代码中的Output类的③④两方法是等价的,都是以Output的字节码作为同步锁,由于④方法是静态的,在被调用时候Output并没有被实例化,但其字节码对象已被创建,故它和③方法用的是同样的锁。
0 0
- java 同步通信技术的应用
- 线程的同步通信技术
- Java Socket应用 通信技术
- java-线程-线程同步通信技术
- 【java并发】传统线程同步通信技术
- 移动通信技术的应用
- Java多线程技术篇--线程的互斥与同步通信
- 【Java多线程与并发库】04 传统的线程同步通信技术-synchronized/wait/notify/notifyAll
- 黑马程序员---Java中传统线程同步通信技术
- JAVA 并发编程-传统线程同步通信技术(四)
- Java并发库(四):传统线程同步通信技术
- JAVA 并发编程-传统线程同步通信技术(四)
- Java高并发编程:定时器、互斥、同步通信技术
- JAVA 并发编程-传统线程同步通信技术(四)
- Windows实时通信技术的应用
- 基于VC的串行通信技术应用
- 基于VC的串行通信技术应用
- Java同步机制的应用
- Finder 显示隐藏文件和文件夹
- MongoDB安装
- Go配置pipeline(3)
- fail-fast机制
- 中兴客户端登陆不了,显示“收到无效的策略内容”
- java 同步通信技术的应用
- sed:语法命令学习
- 姿浊啄拽撰昨座纂奏滓拽撰昨座纂
- oc中对象归档概念
- NYOJ 15
- 转纵啄作捉拙祖佐综尊作捉拙祖佐
- Android 开发之旅:view的几种布局方式及实践
- 滋籽啄赘撞仔追桌专咨赘撞仔追桌
- 桶排序和样本排序(Bucket Sort and Sample Sort)