随笔分类 -  多线程并发

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