1。synchronize方法的产生与vcl的局限性有关,因为vcl控件在同一时刻只能被单线程访问,如果多个线程同时访问vcl,vcl会出现问题。所以问了安全地访问vcl,Tthread类提供了一个方法叫synchronize,他可以让线程中的方法在主线程中执行,所以我们可以把访问vcl的代码都放在这个方法中,然后由主线程执行,从而确保vcl能被安全地访问调用.它的类型是TThreadMethod=procedure   of   object;procedure   参数:Sychronize(Method:TThreadMethod);   
2。当创建一个线程时,vcl会在主线程中创建一个隐含的线程窗口,这个窗口的作用就是把synchronize调用的访问vcl的方法排队.synchronize把Method参数传递过来的方法保存在thread的fmethod字段中然后给线程窗口发一个cm_execproc消息,并把消息的lparam参数设为self,当线程窗口收到这个消息时,就调用Fmethod所制定的方法. 

synchronize相关推荐

  1. jps could not synchronize with target

    在启动程序的时候,使用jps查看启动进程时出现:jps could not synchronize with target.程序启动完成之后,jps输出正常.后来在网上查了下,如下: 用jps看had ...

  2. 菜单与工具条的同步 APP_STANDARD.SYNCHRONIZE

    初始情况下,菜单与工具条的状态是一致的,但程序中动态改变某一属性时,工具条并不能相应地改变,所以必须编写代码完成同步. 通过调用以下函数来完成同步: APP_STANDARD.SYNCHRONIZE ...

  3. 多线程:synchronize、volatile、Lock 的区别与用法

    Java多线程之内存可见性和原子性:Synchronized和Volatile的比较 在说明Java多线程内存可见性之前,先来简单了解一下Java内存模型. (1)Java所有变量都存储在主内存中   ...

  4. Synchronize同步

    Volatile 多线程之间的可见性 但是,不具备同步性,也就是原子性 可以算是一个轻量级synchronized 性能比synchronized强很多,不会造成阻塞 在很多开源架构里 比如,nett ...

  5. Synchronize对String加锁解决

    Synchronize 尽量,不要使用String常量加锁 会出现死循环问题 new String 可以使用new String加锁 package com.bjsxt.base.sync006;/* ...

  6. Synchronize对String加锁

    Synchronize 尽量,不要使用String常量加锁 会出现死循环问题 package com.bjsxt.base.sync006;/*** synchronized代码块对字符串的锁,注意S ...

  7. Synchronize对象改变

    Synchronize 对象锁改变 当对一个对象加锁时 如果,对象本身发生改变,那么,持有的锁就不同了 如果,对象本身不改变,那么,依然是同步的 package com.bjsxt.base.sync ...

  8. Synchronize死锁

    Synchronize死锁 双方互相持有,对方的锁 导致,程序无法继续执行 package com.bjsxt.base.sync006;/*** 死锁问题,在设计程序时就应该避免双方相互持有对方的锁 ...

  9. Synchronize锁对象

    Synchronize锁对象 可以对任意的Object对象,进行加锁 用法比较灵活 package com.bjsxt.base.sync006;/*** 使用synchronized代码块加锁,比较 ...

最新文章

  1. Leetcode题目:Balanced Binary Tree
  2. 终于收到微软的衬衫了!!!
  3. 过程作为黑箱抽象——《计算机程序的构造和解释》
  4. ubuntu10.10+android 搭建Opencv
  5. Hive on Tez出现exec.Task: Failed to execute tez graph. java.lang.NullPointerException
  6. 工作笔记-关于工具函数的编写问题
  7. linux neo4j weget,关于在linux中安装neo4j的步骤
  8. primefaces教程_Primefaces仪表板组件示例教程
  9. iOS数据库操作(使用FMDB)
  10. PMP学习资料干货分享 - 干货满满
  11. 计算机的cpu故障,计算机cpu常见故障
  12. Struts功能详解——ActionForm
  13. 网站日志分析软件--让网站日志分析工作变得更简单
  14. 苹果电脑的文件怎么复制到移动硬盘,macbook文件怎么拷贝到移动硬盘
  15. qt中socket通信流程图_Qt学习 之 Socket通信(世界上最简单的例子了)
  16. Kali Linux系统安装
  17. “要么增长要么死”,狼性文化正在毁掉什么?
  18. 今天科普一下 iOS马甲包审核以及常见审核问题
  19. iview upload爬坑 之手动上传以及动态修改附带参数 附后台接受测试代码
  20. 6.标准C语言程序的文件名的后缀是,c语言源程序文件名的后缀是什么

热门文章

  1. iOS 上常用的两个功能:点击屏幕和return退出隐藏键盘和解决虚拟键盘
  2. 手持终端以物联网的模式
  3. java简单的ID生成器
  4. electron打包可选择安装位置,可自动更新
  5. java8中的时间处理6 - 格式化
  6. Tomcat init 脚本并添加服务自启动
  7. 微信公众平台开发(十一) 功能整合
  8. The JVM Architecture Explained-JVM架构解析(译)
  9. @OneToMany
  10. 男神女神配——alpha阶段总结