模拟一个实例,用一个线程负责写数据,一个线程负责读数据,清单如下:
- FileManager.java 负责读和写的具体实现
- Main.java 主类,入口
- TaskThread.java 自定义线程类
- TaskRead.java 读任务
- TaskWrite.java 写任务
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;
- private String mName = "默认名字";
- private String mEmail = "默认电子邮件";
- public FileManager() {
- mRandom = new Random();
- }
- public void write(String id, String name, String email) {
- mName = name;
- try {
- Thread.sleep(getRandomInt());
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- mEmail = email;
- System.out.println(String.format("写数据 id:%s, name:%s, email:%s", id, name, email));
- }
- public void read(String id) {
- try {
- Thread.sleep(getRandomInt());
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- System.out.println(String.format("读数据 id:%s, name:%s, email:%s", id, mName, mEmail));
- }
- private int getRandomInt() {
- return mRandom.nextInt(2000);
- }
- }
package com.iteye.badpie.javacode.thread.sync;
import java.util.Random;
public class FileManager {
private Random mRandom;
private String mName = "默认名字";
private String mEmail = "默认电子邮件";
public FileManager() {
mRandom = new Random();
}
public void write(String id, String name, String email) {
mName = name;
try {
Thread.sleep(getRandomInt());
} catch (InterruptedException e) {
e.printStackTrace();
}
mEmail = email;
System.out.println(String.format("写数据 id:%s, name:%s, email:%s", id, name, email));
}
public void read(String id) {
try {
Thread.sleep(getRandomInt());
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(String.format("读数据 id:%s, name:%s, email:%s", id, mName, mEmail));
}
private int getRandomInt() {
return mRandom.nextInt(2000);
}
}