`
womendu
  • 浏览: 1480749 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

线程同步的缘由和方法

 
阅读更多

我们知道,使用Runnable方式实现线程可以实现资源共享,但是,依然存在问题,看下面的代码:

当有延迟的时候,可能会造成资源的共享出错。所以我们需要使用同步,以解决此问题。实现同步也有两种方式,使用synchronized代码块和使用synchronized方法。

首先,看第一种方法,使用synchronized代码块:

通过运行可以看到,可以很好的解决问题。同时通过多次运行也可以看到进程间的抢占和切换。

再来看第二种实现方式,使用synchronized方法:

通过运行可以发现,此种方式也可以解决问题。当做到这里的时候,我有了个疑问,使用synchronized方法进行同步,那么run方法也是方法,可不可以将run方法设为同步方法呢。为解决此问题,进行下面的尝试:

通过运行,发现依然可以成功,那么这样做是否有问题呢?synchronized代码块和synchronized方法两种不同的实现同步的方式有何区别呢?以上的代码都是通过实现Runnable接口实现的线程,通过继承Thread实现的线程可否进行同步呢?

分享到:
评论

相关推荐

    CuteOne:一款基于Python3的OneDrive多网盘挂载程序,带会员/同步等功能

    需知:更新缓存是单线程的,由于mysql的瓶颈缘由,只能单线程,何况PHP也只要单线程,所以文件较多的,会比拟耗时; 假如是VPS和效劳器 直接修正网站运转目录为public即可,修正根目录.env里的数据库衔接 装置需求...

    Linux多线程服务端编程:使用muduo C++网络库

    第2章线程同步精要 2.1互斥器(mutex). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 2.1.1只使用非递归的mutex . . . . . . . . . . . . . .. . . . . . . . . . 33 2.1.2死锁. . . . . . . ....

    C++串口编程(VC)

    对于dwAttrsAndFlags参数及FILE_FLAG_OVERLAPPED标志的由来,可解释如下:Windows文件操作分为同步I/O和重叠I/O(Overlapped I/ O)两种方式,在同步I/O方式中,API会阻塞直到操作完成以后才能返回(在多线程方式中,...

    ruby语法基础教程

    §3.2 对象,属性和方法 18 §3.3 继承 20 §3.4 特殊方法与特殊类 21 §3.5 类变量与类方法 23 §3.4 存取控制 23 §3.6 元类 25 §3.7 Ruby的动态性 26 §3.8 变量 26 §3.8.1 局部变量 27 §3.8.2 实例变量 27 §...

    linux网络编程-宋敬彬-part2

    4.3 进程间通信和同步 101 4.3.1 半双工管道 101 4.3.2 命名管道 107 4.3.3 消息队列 108 4.3.4 消息队列的一个例子 114 4.3.5 信号量 116 4.3.6 共享内存 121 4.3.7 信号 124 4.4 Linux下的线程 ...

    linux网络编程-宋敬彬-part3

    4.3 进程间通信和同步 101 4.3.1 半双工管道 101 4.3.2 命名管道 107 4.3.3 消息队列 108 4.3.4 消息队列的一个例子 114 4.3.5 信号量 116 4.3.6 共享内存 121 4.3.7 信号 124 4.4 Linux下的线程 ...

    .NET之美:.NET关键技术深入分析

    3.7委托和方法的异步调用 3.8不使用委托实现Observer模式 3.8.1设计思想概述 3.8.2 Observer模式的接口定义 3.8.3 Observer模式的实现 3.8.4推模式和拉模式 3.8.5推模式和拉模式的区别 3.9本章小结 第4章...

    MFC Windows程序设计(第2版修订版)--源代码

     多线程和线程同步  mfc与组件对象模型(com)  activex控件  《mfc windows程序设计(第2版)》见解深刻,并附带有辅助学习的资源——包括在随附的cd-rom中提供了大量代码实例。  要理解如何利用mfc库中提供的...

    MFC Windows程序设计(第2版修订版)--详细书签版2卷

     多线程和线程同步  mfc与组件对象模型(com)  activex控件  《mfc windows程序设计(第2版)》见解深刻,并附带有辅助学习的资源——包括在随附的cd-rom中提供了大量代码实例。  要理解如何利用mfc库中提供的...

    MFC Windows程序设计(第2版修订版)--详细书签版1卷

     多线程和线程同步  mfc与组件对象模型(com)  activex控件  《mfc windows程序设计(第2版)》见解深刻,并附带有辅助学习的资源——包括在随附的cd-rom中提供了大量代码实例。  要理解如何利用mfc库中提供的...

    linux网络编程-宋敬彬-part1

    4.3 进程间通信和同步 101 4.3.1 半双工管道 101 4.3.2 命名管道 107 4.3.3 消息队列 108 4.3.4 消息队列的一个例子 114 4.3.5 信号量 116 4.3.6 共享内存 121 4.3.7 信号 124 4.4 Linux下的线程 ...

    PK-OS VII User Guide

    缘由很简单:PKOS面对嵌入式微控制器。纯净微小的内核是PKOS的根本也是全部。PKOS VI @196 资源占用:CODE+CONST 684字节 ,TCB+CONTROL 134字节。PKOS仅提供任务管理、信号队列管理和基本时钟服务。PKOS里,把...

    java课程设计五子棋游戏完整版(1).doc

    人人对战的话就不象单机游戏一样,要 计算机来判断人下子之后计算机下那一个地方了,人人对战只要在双方下子的时候判断 赢棋情况,当然还要同步的控制两个人下棋的顺序,这样的话就要用到线程了,各自都 继承或实现...

    java课程设计五子棋游戏完整版.doc

    人人对战的话就不象单机游戏一样,要 计算机来判断人下子之后计算机下那一个地方了,人人对战只要在双方下子的时候判断 赢棋情况,当然还要同步的控制两个人下棋的顺序,这样的话就要用到线程了,各自都 继承或实现...

    精易官方免费模块v3.60版

    关于精易模块由来:  最初开始成立精易论坛时,并没有精易模块的,是自己在平常编写程序时,自己封装成一个模块, 方便自己调用,后应会员的要求,才正式以 精易论坛的前2个字,做为开头,发布了精易模块, 一直...

    Windows内核安全与驱动开发光盘源码

    13.1.1 文件系统微过滤驱动的由来 297 13.1.2 Minifilter的优点与不足 298 13.2 Minifilter的编程框架 298 13.2.1 微文件系统过滤的注册 299 13.2.2 微过滤器的数据结构 300 13.2.3 卸载回调函数 303 13.2.4 ...

    Windows内核安全驱动开发(随书光盘)

    13.1.1 文件系统微过滤驱动的由来 297 13.1.2 Minifilter的优点与不足 298 13.2 Minifilter的编程框架 298 13.2.1 微文件系统过滤的注册 299 13.2.2 微过滤器的数据结构 300 13.2.3 卸载回调函数 303 13.2.4 ...

    新一代 Visual C++2005程序设计 part2

    18.4 同步(Synchronization) 457 18.4.1 Critical Section 459 18.4.2 等待对象的状态改变 462 18.4.3 Mutex 463 18.4.4 Event 465 18.5 进程间通信(IPC) 468 18.5.1 共享内存与文件映射 468 18.6 ...

Global site tag (gtag.js) - Google Analytics