Android 里面synchronized(this)的作用分析
来源:互联网 发布:之前没cos过知乎 编辑:程序博客网 时间:2024/05/18 02:26
1、Synchronzied关键字的作用就是:线程同步。它可以用来修改对象中的方法,将对象加锁。意思是不管哪一个线程A每次运行到这个方法时,都要检查有没有其它正在用这个方法的线程B(或者F等),如果有的话,需要等正在使用这个方法的线程B(或者F)运行完这个方法后再运行此线程A,没有的话,直接运行。
2、先来看下面这个例子,没有加入synchronized(this) 的情况下的运行结果。
新建一个synchronized_test.java文件,代码如下:
public class synchronized_test implements Runnable {public void run() {//synchronized(this) {int i = 0; for (i = 0; i < 6; i++) { System.out.println(Thread.currentThread().getName() + " synchronized loop " + i); try { Thread.sleep(5); } catch (InterruptedException ie) {} }}}public static void main(String[] args) {synchronized_test C1 = new synchronized_test();Thread Tc = new Thread(C1, "thread No1");Thread Td = new Thread(C1, "thread No2");Tc.start();Td.start();}}
运行的结果如下:
从打印的结果看了,当一个线程Tc访问object的一个synchronized(this)同步代码块时,另一个线程Td仍然可以访问该object中的非synchronized(this)同步代码块,所以打印出来的结果显然不是我们想要的按顺序的结果。
3、把上面代码里面的synchronized(this) 这一行打开,我们再来看一下运行结果。
当一个线程访问object的一个synchronized(this)同步代码块时,其他线程对object中所有其它synchronized(this)同步代码块的访问将被阻塞。所以打印出来的结果是有序的。
0 0
- Android 里面synchronized(this)的作用分析
- synchronized(class)、synchronized(this)与synchronized(object)的区别分析
- synchronized方法和同步块的作用范围;synchronized(this)和synchronized(obj)的区别
- 线程-synchronized方法和同步块的作用范围;synchronized(this)和synchronized(obj)的区别
- 线程-synchronized方法和同步块的作用范围;synchronized(this)和synchronized(obj)的区别
- Android的BaseAdapter 里面setTag的作用
- synchronized的作用
- synchronized的作用
- synchronized的作用
- synchronized的作用
- synchronized的作用
- synchronized的两个作用
- synchronized的作用
- synchronized的作用
- synchronized的作用
- synchronized的作用
- synchronized的作用
- synchronized的作用
- Spring基础总结
- C++作业5
- 使用xxtea加密或者解密文件
- C++实验5—数组分离
- List 集合去除 null 元素
- Android 里面synchronized(this)的作用分析
- 最长上升子序列(LIS)
- 求凸包——Graham扫描算法
- ThinkPHP3.2结合jq实现图片的异步上传
- Oracle数据库表信息,序列,视图等导出,导入。(数据库备份和恢复)
- 调到应用商城评价
- mysql扎记
- Mac环境搭建记录
- 【DP】洛谷 P1060 开心的金明