摘要:引子 在并发编程中,我们经常用到非阻塞的模型,在之前的多线程的三种实现中,不管是继承thread类还是实现runnable接口,都无法保证获取到之前的执行结果。通过实现Callback接口,并用Future可以来接收多线程的执行结果。 Future表示一个可能还没有完成的异步任务的结果,针对这个结果
阅读全文
随笔分类 - 线程
摘要:关键字synchronized与wait()和notify()/notifyAll()方法相结合可以实现等待/通知模式。 类ReentrantLock同样可以实现该功能,但是要借助于Condition对象。它具有更好的灵活性,比如可以实现多路通知功能,也就是在一个Lock对象里面可以创建多个Cond
阅读全文
摘要:1.BlockingQueue定义的常用方法如下 抛出异常 特殊值 阻塞 超时 插入 add(e) offer(e) put(e) offer(e,time,unit) 移除 remove() poll() take() poll(time,unit) 检查 element() peek() 不可用
阅读全文
摘要:synchronized 例子 例1,没有同步的时候运行同一个对象的同一个方法的结果: 结果: 可以看到,是同时在执行一个方法里面的内容,没有进行同步 例2,当我们其它不变,只是在方法上加synchronized后: 结果: 可以看到是一个方法执行完后再执行下一次,已经进行了同步 例3,我们在添加另
阅读全文
摘要:jdk1.5引入Executor线程池框架,通过它把任务的提交和执行进行解耦,只需要定义好任务,然后提交给线程池,而不用关心该任务是如何执行、被哪个线程执行,以及什么时候执行。 初始化线程池(4种) 简介: Java线程池的工厂类:Executors类, 初始化4种类型的线程池: newCached
阅读全文
摘要:线程具有五中基本状态 新建状态(New):当线程对象对创建后,即进入了新建状态,如:Thread t = new MyThread(); 就绪状态(Runnable):当调用线程对象的start()方法(t.start();),线程即进入就绪状态。处于就绪状态的线程,只是说明此线程已经做好了准备,随
阅读全文