学习笔记

死锁 锁顺序死锁 A->锁住Left->尝试锁住Right->永久等待 B—>锁住Right->尝试锁住Left->永久等待 //注意:容易发生死锁 public class LeftRightDeadLock{ private final Object left=new Object(); private final Object right=new Object(); publ...

Read More

单独编译 组织程序的策略 头文件:包含结构声明和使用这些结构的函数的原型,包含: 函数原型 使用#define或const定义的符号常量 结构声明 类声明 模板声明 内联函数 源代码文件:包含与结构有关的函数的代码 源代码文件:包含调用与结构相关的函数的代码 头文件管理 在同一个文件中只...

Read More

并发技巧清单 可变状态是至关重要的。 所有的并发问题都可以归结为如何协调对并发状态的访问。可变状态越少,就越容易确保线程安全性。 尽量将域声明为final类型,除非需要它们是可变的。 不可变对象一定是线程安全的。 不可变对象能极大地降低并发编程的复杂性。它们更为简单而且安全,可以任意共享而无须使用加锁或保护性复制等机制。 封装有助于管理复杂性。 在编写线程安全的程序时,虽然可以将所有数据都保存在全局变量中,但为什么要这样做?将数据封装在对象中,更易于维持不变性条件:将同步...

Read More

class LooperThread extends Thread { public Handler mHandler; public void run() { Looper.prepare(); mHandler = new Handler() { public void handleMessage(Message msg) { // process incoming messages here } }; Looper.loop(); } } <a href="#Looper" class="headerl...

Read More

线程安全性 如果当多个线程访问同一个可变的状态变量时,没有使用合适的同步,程序就会出现错误,有三种方法修复这个问题? 不在线程之间共享该状态变量 将状态变量修改为不可变的变量 <l...

Read More

可见性 内存可见性:当一个线程修改了对象的状态后,其他线程能够看到发生的状态变化。 重排序:在缺少同步的情况下,编译器、处理器以及运行时等都可能对操作的执行顺序进行一些意想不到的调整在缺乏足够同步的多线程程序中,要想对内存操作的执行顺序进行判断,几乎无法得出正确的结论。 失效数据 get和set在没有同步的情况下访问value @NotThreadSafe public class MutableInteger{ private int value; ...

Read More

设计线程安全的类 在设计线程安全类的过程中,需要包含以下三个基本要素: 找出构成对象状态的所有变量。 找出约束状态变量的不变性条件。 简历对象状态的并发访问管理策略 收集同步需求 如果不了解对象的不变性条件与后验条件,那么就不能确保线程安全性。要满足在状态变量的有效值或状态转换上的各种约束条件,就需要借助于原子性于封装性。 <a href="#...

Read More
C++PrimerPlus函数
2018-7-23 ・

函数 如何使用函数 提供函数定义 提供函数原型 调用函数 函数定义 无返回值 void functionName(parameterList) { statement(s) return; //optional } 有返回值 typeName functionName(parameterList) { statements return value;//value is type cast to type typ...

Read More
C++PrimerPlus指针
2018-7-23 ・

指针 指针是一个变量,其存储的是值得地址,而不是值本身。通过&amp;name获取变量地址。 声明和初始化指针 指针声明必须指定指针指向的数据的类型 typename * name; name是指针(地址),*name是typename而不是指针 *运算符两边的空格是可选的 int * p1,p2 创建了一个指针(p1)和一个变量(p2),对每个指针变量名,都需要使用一个* ...

Read More

数组 字符串 string 结构 共同体 枚举 数组 数组声明 数组的声明应指出一下三点: 存储在每个元素中的值的类型 数组名</li...

Read More

fun

Talk is cheap. Show me the code.


Powered by  Hexo, Theme designs by  @hpcslag.
Style-Framework  Tocas-UI designs by  @YamiOldmel