`
badpie
  • 浏览: 5544 次
最近访客 更多访客>>
社区版块
存档分类
最新评论
文章列表
接Java Code之线程与同步(一)的例子,使用synchronized来挂锁。实际上这个锁的效率并不高,分析一下,如果门外排队的都是读数据的人,那么这些人是可以同时进入屋子里的,他们不会影响数据的配对。也就是说可以多个读数据操作同时进行,写数据操作只能同时有一个,并且在写数据时,不能读数据。 Java中就有一个这样的挂锁机制,看代码: 如之前的例子,只需修改FileManager.java package com.iteye.badpie.javacode.thread.sync; import java.util.Random; import java.util.conc ...
模拟一个实例,用一个线程负责写数据,一个线程负责读数据,清单如下: FileManager.java 负责读和写的具体实现 Main.java 主类,入口 TaskThread.java 自定义线程类 TaskRead.java 读任务 TaskWrite.java 写任务   FileManager.java package com.iteye.badpie.javacode.thread.sync; import java.util.Random; public class FileManager { private Random mRandom; ...
Java提供了Thread类来创建线程,具体看代码   新建下载线程类 package com.iteye.badpie.javacode.thread; import java.util.Random; public class DownloadThread extends Thread { private static final String TAG = DownloadThread.class.getSimpleName(); private String mMovie; private Random mRandom; p ...
一台电脑上,开一个迅雷在下载游戏,还挂着QQ和一个朋友聊天,这个迅雷和QQ是两个不相关的程序,他们之间没有相互影响,至少看起来是没有关联的。你关闭了迅雷,QQ不会退出。这里的迅雷和QQ是属于不同的进程。进程的运行和调度会消耗很多资源。你的电脑能同时开200个应用程序么? 迅雷里有10个电影在同时下载,他们之间也没有太大的影响,每个下载任务独自运行,不会因为其中一个资源下载失败导致另外的下载失败,取消了其中的一个下载任务,其它的下载任务也不会受到影响。这里的迅雷是一个进程,里面的这10个下载任务就是属于迅雷这个进程的10个线程。   下面来看看Java提供了什么方式来操作进程和线程。 每一 ...
  先看看Looper,MessageQueue,Message,Handler之间的关系. Looper的构造函数是private,因此不能直接new,Looper的prepare方法会先检查当前线程下是否存在Looper,如果不存在则为当前线程new一个Looper,如果发现当前线程下已经存在Looper实例,则会抛出异常。 相关源码如下: static final ThreadLocal<Looper> sThreadLocal = new ThreadLocal<Looper>(); public static void prep ...
package com.iteye.badpie.javacode.duotai; /** * 人民警察 */ public interface IPolice { /** * 抓小偷 */ public void catchThief(); }   package com.iteye.badpie.javacode.duotai; /** * 一个警察,执行抓小偷任务. */ public class PoliceReal implements IPolice { @Override ...
Global site tag (gtag.js) - Google Analytics