线程的同步异步,以及具体代码实现,使用场景
来源:互联网 发布:淘宝申请介入会退款吗 编辑:程序博客网 时间:2024/05/21 10:33
大家说的多,而很多很多新手不太理解的一个线程的同步与异步,今天总结下。
一个程序一般是一个进程,而我们有时候程序要求多线程(thread)。什么是多线程呢?学习过线程的同学应该都记得 建立一个线程的两个方法,
第一:就是MyThread继承系统的Thread 实现run方法,在创建的时候是直接new MyThread(),然后通过调用
该线程子类的.start(),方法启动。这个有一个问题就是当你的
MyThread这个类还需要继承别的抽象类或者别的类的时候就不行了。
第二:就是实现Runable 接口,注意这个是接口哈,java中一个类可以实现多个接口,这点是和第一种区别之处,
也是为啥大家都推荐使用这种。也是MyThrad 实现Runable
接口的run(),调用的地方和第一种操作有点点不一样,new Thread(new MyThread()) ,调用也一样的。
啰嗦了半天线程的操作,回归正题吧。
什么叫同步? 什么叫异步?无论同步还是异步,都必须是多线程,也就是再您的代码里使用了new Thread().
假设现在程序主线程我们叫他A ,而 你在你的代码里新建了一个线程B, 和一个线程C 。 在A中你先启动B 在启动C ,
如果当前规定线程同步,那么无论是线程A 启动B 之后必须等待B执行完毕,再往下执行。执行到C ,仍旧是需要等C执行完毕之后再回归到
主线程继续往下执行。 这个就是线程同步,他安全,但是往往用户体验不好,当B 、或者C 是一个比较耗时的操作的时候,A就一直等待,特别是
如果主线程主要是显示界面变化的线程的时候,界面在这种情况下会出现卡顿的情况。
什么叫异步呢? 我们前面提出的ABC 命名假设还是成立。
在异步机制下,当A线程中启动了B ,之后A会继续往下执行,B呢也会执行,如果CUP是分给B 那么B就在执行,分给了A ,那么A就在执行。
然后A又启动一个C线程,C也会一起排队等待分配CUP运行,如此一旦ABC 三个线程需要访问到同一段代码,特别如意混用了代码中的数据,导致安全性能问题。
到现在为止相信大家对于同步异步都有一定了解,那么在我们实际代码中怎么样让程序同步,如何又允许异步呢?
如何操作呢?
一般有两个方法 方法同步,代码块同步
方法的同步介绍:synchronized只能标记非抽象的方法
public synchronized void oper(int x) {
}
代码块的同步介绍:
lock 是一个任意对象,一般使用this 即可
synchronized (lock) { System.out.print("Synchronize"); System.out.println("Code"); }
- 线程的同步异步,以及具体代码实现,使用场景
- 同步、异步的使用场景及好处
- FIFO 同步、异步以及Verilog代码实现
- FIFO 同步、异步以及Verilog代码实现
- 线程同步的场景
- 理解final static的使用场景以及具体含义
- AJAX中同步和异步的区别和使用场景
- AJAX同步和异步的区别及使用场景
- FPGA基础知识12(FIFO 同步、异步以及Verilog代码实现)
- 使用关键代码段实现线程同步
- 使用关键代码段实现线程同步
- 线程的同步:采用同步代码块实现同步
- 线程同步化的理解以及使用
- javascript真的是异步的吗?且看setTimeout的实现原理以及setTimeout(0)的使用场景
- javascript真的是异步的吗?且看setTimeout的实现原理以及setTimeout(0)的使用场景
- 同步异步实现代码小结
- mysql主从同步异步场景的分析
- iOS实现多个异步线程同步的操作
- opencv+pcl配置
- 17. JavaScript Math(算数)对象
- 列出文件夹下所有文件夹的树形结构--Dos命令 tree的使用
- 介紹好用工具:RichCopy (檔案複製與備份的絕佳工具)
- IOBYEVNT.C-----overlapped I/O with signaled everts
- 线程的同步异步,以及具体代码实现,使用场景
- VMwareTools安装及出现kernel header path的解决方法
- ISA2006如何用SQL来记录日志?
- 关于application/x-www-form-urlencoded编码
- CAS——手写第一步:HTML控件与Web服务器控件
- 也谈VC中ModifyStyle&ModifyStyleEx无法改变控件的Style)
- 裸机驱动模板
- vc6.0在win8或8.1下“打开文件”功能不用用的解决办法
- 万网企业邮箱拒信常规问题对照表