`
文章列表
原先多线程并发编程的学习笔记和代码整理一下贴上来。 --------------------------------- 延迟阻塞队列DelayQueue 根据JDK文档描述: Delayed元素的一个无界阻塞队列,只有在延迟期满时才能从中提取元素。该队列的头部是延迟期满后保存时间最长的Delayed元素。如果延迟都还没有期满,则队列没有头部,并且poll将返回null。当一个元素的 getDelay(TimeUnit.NANOSECONDS)方法返回一个小于等于0的值时,将发生到期。即使无法使用take或poll移除未到期的元素,也不会将这些元素作为正常元素对待。例如,size方法同 ...
原先多线程并发编程的学习笔记和代码整理一下贴上来。 --------------------------------- 循环阻断器CyclicBarrier CyclicBarrier(循环栅栏):没有找到合适的名字,这里自己翻译成循环阻断器。 感觉这个工具类其实和CountDownLatch很像,不同的是CountDownLatch是等待一组其它线程,CyclicBarrier是一组线程相互等待。而且CountDownLatch是通过计数停止等待(计数为0时,才会继续执行),而CyclicBarrier是在所有线程都调用了await()后才会继续执行的。 根据JDK文档中描述: ...
原先多线程并发编程的学习笔记和代码整理一下贴上来。 --------------------------------- 倒计数锁CountDownLatch 根据JDK文档中的描述: 在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。 这里给出2个例子如下。 首先定义一个工作线程: class WorkerThread implements Runnable { private final CountDownLatch startSignal; private final CountDownLatch doneSignal; public Wor ...
前一段时间接了一个任务,把目前主流的应用市场请求响应全抓出来分析一下,出个报告。至于分析这些应用的目的就不直说了。然后在邮件后面列出了一个长长的应用列表,包括:91、360、机锋、应用汇、安智、安卓...等等,以致于我把这些应用都装测试机上发现手机内存不够用了。 不过加班加点昨天可算弄完,分析结果就不贴出来了,这里只记录一下方法。 一、需要使用如下软件: android sdk (我装的2.1) 抓包:tcpdump 分析包:Wireshark Version 1.6.2 二、抓包(需要root过的手机): 首先进入android sdk中的platform-tools路径,执 ...

杯具了

从头看一遍吧还是...

又是一年

又一年过去了. 只要路是自己选的,就不怕走远,生活总会留点什么给对它抱有信心的人的...
原先多线程并发编程的学习笔记和代码整理一下贴上来。 --------------------------------- 队列 可以使用同步队列来解决任务协作问题,同步队列在任意时刻都只允许一个任务插入或移除元素。 同步队列的实现: 1、java.util.concurrent包中的BlockingQueue接口提供了这个队列,且该接口有大量实现,举例如下: 首先定义一个任务Task类,该任务有3步操作: class Task{ public enum Status {FIRST,SECOND,THIRD}; private Status status = Status. ...
原先多线程并发编程的学习笔记和代码整理一下贴上来。 --------------------------------- 线程协作与Condition接口 一、线程协作: Java提供的线程之间协作方式主要有两种: 1、Object类中提供的wait、notify、notifyAll: 这种方式历史悠久,本篇只简单介绍一下。 相关知识点: (1)wait()等待某个条件变化,这种条件将由另一个线程来改变,但不能因为测试这个条件而不断的空循环。所以wait()会在等待外部循环的时候挂起,并且只有在notify(),notifyAll()发生时,才会唤醒继续执行。 (2)必须从同 ...
原先多线程并发编程的学习笔记和代码整理一下贴上来。 --------------------------------- 原子操作 一、什么是原子操作 原子操作是不能被线程调度机制中断的操作。一旦操作开始,它一定可以在可能发生的上下文切换之前(切换到其他线程执行)执行完毕。 原子操作可以应用于除long和double之外所有基本类型之上的简单操作。对于读取和写入除long和double之外的基本类型变量这样的操作,可以保证它们会被当作不可分的操作来操作内存。但64位的long和double读取和写入会被当作2个分离的32位操作来执行,这就产生一个读取和写入操作中间发生上下文切换,从而 ...
原先多线程并发编程的学习笔记和代码整理一下贴上来。 --------------------------------- 睡眠和中断 一、线程睡眠 1、sleep Thread.sleep(time)方法应该比较常用,即在指定的毫秒数内让当前正在执行的线程休眠,如果有线程中断了当前线程,则抛出InterruptedException异常,且当前线程的中断状态被清除。 注意线程sleep时并不释放锁。 在javase5中java.util.concurrent.TimeUnit枚举类提供了另一种sleep方式: TimeUnit.SECONDS.sleep(1);//1s Ti ...
原先多线程并发编程的学习笔记和代码整理一下贴上来。 --------------------------------- synchronized与Lock Java中提供了2种线程同步的方式,一种是Java语言级的同步原语synchronized关键字,另一种是使用javase5中新提供的java.util.concurrent.locks.Lock相关接口。 一、synchronized 关于synchronized,大家应该都比较熟悉了,从最早的java规范开始就包含了这个关键字。 1、synchronized作用域: (1)是某个对象实例范围。synchronized防止 ...
原先多线程并发编程的学习笔记和代码整理一下贴上来。--------------------------------- 捕获线程异常 javase5提供了一个新接口Thread.UncaughtExceptionHandler,该接口当Thread因未捕获的异常而突然终止时,调用处理程序。举例:首先定义一个任务。 class ExceptionThread implements Runnable{ @Override public void run(){ System.out.println("current thread name:"+Thr ...
原先多线程并发编程的学习笔记和代码整理一下贴上来。 --------------------------------- Runnable与Callable Runnable工作是执行独立的任务,它不具备任何返回值。如果需要任务需要完成后返回一个值,使用Callable接口。 一、Runnable: 无返回值(void),如下 class Worker implements Runnable{ private static int workerCount = 0; //线程总数 private final int workId = workerCount++; //fina ...
原先多线程并发编程的学习笔记和代码整理一下贴上来。 --------------------------------- 线程创建与线程池 一、线程创建 创建一个线程的方式有2种,一种是直接重写Thread类的run方法,另一种是实现Runnable接口重写run方法,然后传 ...
曾写过一篇《SQL调优与报表性能优化》的文章,今天结合那篇文章把前段时间工作中的一些认识和网上收集别人的经验重新总结整理一下,作为上一篇SQL优化的续篇,分享出来,希望对看到的人有所帮助。同时欢迎拍砖。 一、 ...
Global site tag (gtag.js) - Google Analytics