随笔分类 - 多线程并发
摘要:异常释放锁的情况 package demo1;/** * * Created by liudan on 2017/6/5. */public class MyThread5_synchronized2 { private int i=0; public synchronized void opera
阅读全文
摘要:package demo1;/** * synchronized锁重入 * Created by liudan on 2017/6/5. */public class MyThread5_synchronized1 { /** * 父子类同步必须 都 使用synchronized关键字 */ sta
阅读全文
摘要:对于对象的同步、异步的方法,设计程序的时候一定要考虑问题的整体,出现数据不一致就一个经典的错误。 package demo1;/** * * Created by liudan on 2017/6/3. */public class MyThread4 { private String user =
阅读全文
摘要:多个线程多个锁 1.多个线程,每个线程都可以去拿到自己制定的锁(object) ,分别获取锁后,执行 synchronized 方法。 2. synchronized 拿到的锁都是对象锁,而不是把一段代码、方法的锁,多个线程就次有该方法的对象锁。2个对象,线程获取就是2个对象不同的锁(互不影响)。
阅读全文
摘要:同步synchronized 1.同步的概念就是共享资源,如果不是为了共享资源没必要进行同步;同步的目的就是为了线程安全,线程安全只需要满足特性:原子性(同步)、可见性 package demo1;/** * Created by liudan on 2017/5/30. */public clas
阅读全文
摘要:实现多线程 1.基础Thread类2.实现Runnable接口 描述: 1.当多个线程访问 MyThread 这个类方法的时候,一排队的方式去进行访问处理(cpu的分配) 2.一个线程要执行 synchronized 方法修饰的代码:尝试去获取锁,如果拿到锁,则立即去执行。 如果拿不到锁,则会一直不
阅读全文
摘要:package demo1;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.Semaphore;public class Dem
阅读全文
摘要:package dmeo9;public class MyAccount { private String oid; private int cash; public MyAccount(){ } public MyAccount(String oid, int cash) { this.oid =
阅读全文
摘要:Condition package dmeo9;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.Reentrant
阅读全文
摘要:package dmeo9;import javax.security.auth.login.FailedLoginException;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.Reentrant
阅读全文
摘要:自定义线程池 1.若Executors工厂类无法满足需求,可以自己使用工厂类创建线程池,底层都是使用了ThreadPoolExecutor这个类可以自定义。 public ThreadPoolExecutor(int corePoolSize(当前核心线程数), int maximunPoolSiz
阅读全文
摘要:Executor框架 1.为了更好的控制多线程,jdk并发包的核心,其中一部分比较重要的类:Excutor,帮助开发人员有效控制多线程、作为线程工厂的角色。 Executors创建线程static方法 1.newFixedThreadPool(),该方法返回一个固定的线程池,线程池的的固定数量是始终
阅读全文
摘要:volatile:一个线程修改了某一个共享变量的值,其他线程也是否能够立即知道这个修改的 package demo1;/** * Created by liudan on 2017/7/2. */public class MyThread_volatile extends Thread { priv
阅读全文
摘要:原子性 1.一个操作是不可中断的,即使多个线程在一起执行的时候,一旦操作执行开始,就不会被其他的线程干扰执行并导致执行中断。 2.对于静态变量int ,2个线程同时对它进行修改,线程a对它修改为10,线程b对它修改为15,a、b线程之间是没有干扰的,最后的结果要么是10或者15。 3.非原子性操作时
阅读全文
摘要:public class CountDownLatchTest { // 模拟了100米赛跑,10名选手已经准备就绪,只等裁判一声令下。当所有人都到达终点时,比赛结束。 public static void main(String[] args) throws InterruptedExceptio
阅读全文
摘要:1.线程是操作系统的独立的个体,但这些个体如果不经过特殊处理就不能成为一个整体。 2.使用wait、notify,方法实现线程通信(2个方法都是需要object方法) 3.wait(释放锁)、notify(不会释放锁)必须配合synchronized关键字使用。 package demo2;impo
阅读全文
摘要:package demo2;import java.util.concurrent.CountDownLatch;/** * Created by liudan on 2017/7/27. */public class DemoCountDownLatch { public static void
阅读全文
摘要:package demo3;import java.util.concurrent.TimeUnit;/** * Created by liudan on 2017/7/7. */public class MyThread1 { public static ThreadLocal<String> t
阅读全文
摘要:FutureTask 线程池submit与execute package demo2;import java.util.concurrent.*;/** * Created by liudan on 2017/7/31. */public class DemoFuture implements Ca
阅读全文
摘要:voctor动态数组、同步类容器,底层实现基于:Collections.synchronized package demo5; import java.util.ArrayList; import java.util.Collections; import java.util.List; impor
阅读全文

浙公网安备 33010602011771号