摘要:###解题思路 实现一个类OddEven 有一个打印奇数的方法,有一个打印偶数的方法。 类中有一个volatile变量 ,用来控制当前状态是该哪个方法打印。 方法中打印每个数前首先判断volatile变量的状态,不该自己打印就使用Thread.yield()让出CPU,该自己就打印并调换状态。 在主
阅读全文
摘要:基本概念 并行与并发 并行:单位时间内多个任务同时执行(多核CPU)。 并发:同一时间段内多个任务同时都在执行(CPU时间片轮转)。 线程安全性问题 线程安全问题:指多个线程同时读写一个共享资源而没有同步措施时,导致出现脏数据或其他不可预见结果的问题。 保证线程安全方法:线程同步。 内存可见性问题
阅读全文
摘要:1.2线程创建与运行 创建线程有三种方式: 1. 继承Thread类并重写run方法; 2. 实现Runnable接口的run方法,new Thread时将该类对象作为参数传入; 3. 实现Callable接口的call方法,new FutureTask时将该类对象作为参数传入,再在new Thre
阅读全文
摘要:第1章 线程 1.1 线程与进程 进程是操作系统资源分配和调度的基本单位,但cpu资源是分配到线程的,也就是线程是CPU分配的基本单位。 线程自己的栈资源中,存放的局部变量是线程私有的,其他线程无法访问,除此之外栈还存线程的调用栈帧。 1.2 线程创建 三种方式:实现Runnable接口的run方法
阅读全文
摘要:synchronized关键字 synchronized块是Java提供的一种原子性内置锁,每个对象都可以把它当同步锁来用。线程在进入synchronized块钱会自动获取内部锁,这时候其他线程访问同步代码块时会被阻塞挂起。 synchronized会造成很大的系统开销,尽量避免不必要的使用。 每种
阅读全文