`
huhu_long
  • 浏览: 71587 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

10/18/2011 - Thread 相关

阅读更多
1. 进程是资源的占有者,线程是资源的使用者。
2. 进程本身不能执行,它只是一个资源的集合体,拥有地址空间,模块,内存。
3. 线程是真正的执行单元,一个进程如果没有线程,那么就没有存在的意义,因为不可能执行。
------------------------ 我是分割线 ----------------------------------
4. 线程池:
   a) 创建线程目标对象,其实就是Runnable对象
   b) 使用Executors创建线程池,返回一个ExecutorService类型的对象
   c) 使用线程池执行线程目标对象,即:exec.execute(run);
   d) 最后线程池结束线程,exec.shutdown().
------------------------ 我是分割线 ----------------------------------
5. volatile 可以安全的替代锁的两个条件:
   a) 对变量的写操作不依赖于当前值。
   b) 该变量没有包含在具有其他变量的不变式中。
   如:
   针对条件1,i++ i-- 这样的操作是不能用volatile 替代
   针对条件2,if (volatileVar > num) 这样的形式也不能用volatile 替代锁
------------------------ 我是分割线 ----------------------------------
6. ThreadLocal 会为每一个线程提供一个独立的变量副本. 每个线程在使用ThreadLocal 变量的get方法的时候都会先执行initialValue()方法, 如果先执行了set方法就不会再执行initialValue()方法。如果程序员希望将ThreadLocal 变量初始化为 null 以外的某个值则必须实现initialValue()方法。
对于每个线程ThreadLocal变量不存在影响他们之间协作的状态,为每个线程创建一个ThreadLocal变量的拷贝或者叫做副本。
------------------------ 我是分割线 ----------------------------------
7. 同步机制采用了“以时间换空间”的方式,而 ThreadLocal 采用了“以空间换时间”的方式。
------------------------ 我是分割线 ----------------------------------
8. Concurrent 包下面主要提供了一些线程安全的数据结构,最经典的就是 生产者-消费者 问题 用阻塞队列的实现。 ArrayBlockingQueue / LinkedBlockingQueue. 还有就是Map 与 ConcurrentMap, ConcurrentMap的所有方法都是原子的。 比如: Map中得 put 方法对应的方法是 putIfAbsent.
------------------------ 我是分割线 ----------------------------------







分享到:
评论

相关推荐

    nServer-v2.1023[FTP + MYSQL + HTTP + PHP(FCGI)]

    2011年12月10日 - PHP-FCGI采用每进程唯一端口的方式,解决高并发502错误频繁的问题 2011年11月30日 - 更新Nginx版本到1.0.10 2011年11月28日 - 再次细化Nginx配置文件 2011年11月9日 - 修正Nginx在Windows2003...

    获取USB摄像头的1080p的JPEG格式的图片20180608_1806.7z

    // unsigned char head[54] = {0x42,0x4d,0x36,0x10,0x0e,0x00,0x00,0x00,0x00,0x00,0x36,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x80,0x02,0x00,0x00,0xe0,0x01,0x00,0x00,0x01,0x00,0x18,0x00,0x00,0x00,0x00,0x00,...

    C++ 标准 ISO 14882-2011

    C++标准ISO 14882-2011涉及的内容丰富,是C++语言的官方文档,其中包含了从语言的基础特性到高级库功能的详细规范。下面将对文件中提及的标题和描述中的知识点进行详细解释: 1. 一般规定(General) - 标准的范围...

    JDK(Java Development Kit)

    - 打开命令提示符窗口,输入`javac`命令,如果看到相关帮助信息,则表示JDK安装成功。 - 验证环境变量设置是否正确,可以尝试编译一个简单的Java程序来测试。 #### 三、JDK的核心组件 JDK包含了一系列的核心组件...

    深入理解Android:卷I--详细书签版

    深入理解Android:卷I(51CTO网站“2011年度最受读者喜爱的原创IT技术图书”) 基本信息 作者: 邓凡平 出版社:机械工业出版社 ISBN:9787111357629 上架时间:2011-9-13 出版日期:2011 年9月 开本:16开 页码:488...

    Java面试宝典2011版

    ### Java面试宝典2011版知识点梳理 #### 一、Java基础部分 1. **源文件中类的数量及限制** - 在一个`.java`源文件中,可以包含多个类(不是内部类),但是只能有一个公共类,并且该源文件的名字必须与公共类的...

    vc++ 开发实例源码包

    18:单线程下载时不能创建临时文件. 19:下载流文件(rm,Media Player). Notepad++ V5.6.8 源码! 如题。 OA精灵代码 c++版 一套oa系统。 ocxdlgtest dll的一个实例。 OD反汇编引擎(带VC修改版和原版) 如题。主要...

    C++11标准发布文档

    C++11是C++编程语言的一个重要版本更新,它在2011年被正式发布,并取代了之前版本的C++标准。C++11最初被称为C++0x,其官方标准编号为ISO/IEC 14882:2011。这一版本相较于C++98和C++03(2003年版本)引入了大量新...

Global site tag (gtag.js) - Google Analytics