Java Code之线程与同步(一)

本文通过一个Java实例展示了如何使用两个线程分别进行数据的读取和写入操作。其中一个线程负责写入数据,另一个线程负责读取数据。具体实现了线程间的同步与异步处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

模拟一个实例,用一个线程负责写数据,一个线程负责读数据,清单如下:

Java代码 复制代码 收藏代码
  1. FileManager.java 负责读和写的具体实现
  2. Main.java 主类,入口
  3. TaskThread.java 自定义线程类
  4. TaskRead.java 读任务
  5. TaskWrite.java 写任务
FileManager.java 负责读和写的具体实现
Main.java 主类,入口
TaskThread.java 自定义线程类
TaskRead.java 读任务
TaskWrite.java 写任务

FileManager.java

Java代码 复制代码 收藏代码
  1. package com.iteye.badpie.javacode.thread.sync;
  2. import java.util.Random;
  3. public class FileManager {
  4. private Random mRandom;
  5. private String mName = "默认名字";
  6. private String mEmail = "默认电子邮件";
  7. public FileManager() {
  8. mRandom = new Random();
  9. }
  10. public void write(String id, String name, String email) {
  11. mName = name;
  12. try {
  13. Thread.sleep(getRandomInt());
  14. } catch (InterruptedException e) {
  15. e.printStackTrace();
  16. }
  17. mEmail = email;
  18. System.out.println(String.format("写数据 id:%s, name:%s, email:%s", id, name, email));
  19. }
  20. public void read(String id) {
  21. try {
  22. Thread.sleep(getRandomInt());
  23. } catch (InterruptedException e) {
  24. e.printStackTrace();
  25. }
  26. System.out.println(String.format("读数据 id:%s, name:%s, email:%s", id, mName, mEmail));
  27. }
  28. private int getRandomInt() {
  29. return mRandom.nextInt(2000);
  30. }
  31. }
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);
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值