- 浏览: 258740 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (88)
- JAVA / base (26)
- JAVA / web (12)
- JAVA / Lib-tools (5)
- SERVER / tomcat (4)
- DB / mysql (4)
- DB / mongodb (2)
- DB / memcached (2)
- DB / redis (2)
- WEB / Front-end (3)
- WEB / security (4)
- WEB / css (2)
- WEB / js (4)
- OS / linux (3)
- IT / Architecture (4)
- IT / other (2)
- Android (9)
- Go (1)
- Other (1)
- OS / Mac (2)
最新评论
-
Zero2Max:
哈哈,马士兵老师也发现了。
java实现接口的bug -
xly1981:
能像CSRF攻击一样带个图就更棒了
XSS跨站攻击 -
xmong:
df274119386 写道在javascript中看到下面的 ...
CSRF攻击与防御策略 -
df274119386:
在javascript中看到下面的语句 e.value = t ...
CSRF攻击与防御策略 -
xmong:
yzxqml 写道xmong 写道yzxqml 写道tomca ...
Tomcat集群
Java实现多线程保存文件:两线程去保存文件,一个保存线程定时去保存文件,一个修改线程去修改文件,随机停贷后再去保存文件,如果其中一个线程已经保存过文件了,那么另一个线程来保存文件的时候就不需要保存了。
这里的保存摸拟为内容写人文件中。
类设计如下:
Data:数据类用于存储文件内容信息的类,提供修改文件内容和保存内容的方法。
SaveThread:保存线程类定时保存调用数据类的保存方法去保存文件。
ChangeThread:修改线程类不断调用数据类的修改方法修改文件,并保存。
Mian:执行入口。
实现如下:
Data:数据类
package com.blak.thread; import java.io.FileWriter; import java.io.IOException; import java.io.Writer; /** * * @author Administrator * 文件数据类 */ public class Data { private final String fileName;//文件名 private String content; //文件内容 private boolean changed; //标志文件是否被修改 public Data(String name, String content){ this.fileName = name; this.content = content; this.changed = true; } /** * 修改文件内容,并将修改标志值为true * @param content */ public synchronized void change(String content){ this.content = content; changed = true; } /** * 保存文件数据,即将数据内容写入到文件中去保存,并将修改标志值为false * @throws IOException */ public synchronized void save()throws IOException{ if(!changed)return; doSave(); //执行保存 changed = false; } /** * 将文件内容写入文件中保存 * @throws IOException */ public void doSave() throws IOException{ Writer writer = new FileWriter(fileName); writer.write(content); writer.close(); System.out.println(Thread.currentThread().getName()+" doSave content="+content); } }
SaveThread:保存数据线程类
package com.blak.thread; import java.io.IOException; /** * 保存线程定时保存文件数据 * @author Administrator * */ public class SaveThread extends Thread{ private Data data; public SaveThread(Data data){ super("SaveThread"); this.data = data; } /** * 保存线程每隔一秒检查保存文件一次 */ public void run(){ while(true){ try { data.save(); Thread.sleep(1000);//休息1秒 } catch (IOException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); } } } }
ChangeThread:修改数据线程类
package com.blak.thread; import java.io.IOException; import java.util.Random; /** * 修改文件线程,修改将文件保存 * @author Administrator * */ public class ChangeThread extends Thread{ private Data data; private Random random = new Random(); public ChangeThread(Data data){ super("ChangeThread"); this.data = data; } /** * 修改文件 */ public void run(){ try { for (int i = 0; i < 10; i++) { data.change("content."+i); Thread.sleep(random.nextInt(1000));//摸拟线程去执行其他任务 data.save(); } } catch (InterruptedException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
Main:main执行入口
package com.blak.thread; public class Main { /** * 指定文件,启动保存线程和修改线程 * @param args */ public static void main(String[] args) { Data data = new Data("d:/data.txt", "test"); new SaveThread(data).start(); new ChangeThread(data).start(); } }
执行结果为:
SaveThread doSave content=test ChangeThread doSave content=content.0 SaveThread doSave content=content.1 ChangeThread doSave content=content.2 ChangeThread doSave content=content.3 SaveThread doSave content=content.4 ChangeThread doSave content=content.5 SaveThread doSave content=content.6 ChangeThread doSave content=content.7 SaveThread doSave content=content.8 SaveThread doSave content=content.9
发表评论
-
Java validation(java验证器实现)
2014-03-18 11:45 3632Java validation 1. java验证器 在 ... -
Memo class备注类信息
2014-03-18 09:52 807Memo Class 1. 什么是Memo Class Mem ... -
java annotation注解
2014-01-24 18:01 9041. Annotation的声明方式 An ... -
Java RMI
2013-03-28 15:12 1644Java Rmi 目录 1 JAVA RMI 1 ... -
java内部类
2013-03-19 16:25 993Java内部类 目录 1 JAVA ... -
java多线程设计模式之订单模式
2013-03-11 14:00 2610Java多线程实现订单模式: 客户端线程向服务端发起请求后, ... -
java多线程设计模式之线程池处理请求
2013-03-08 17:50 1782Java实现线程池处理请求: 客户端线程发出请求,请求存入请 ... -
java多线程设计模式之异步处理请求
2013-03-08 12:36 4483Java实现多线程异步处理请求: Java实现多线程异步处理 ... -
java多线程设计模式之读写文件模式
2013-03-07 17:56 1542Java实现多线程读写数据 ... -
java多线程设计模式之生产者与消费者
2013-03-07 11:34 997Java实现多线程生产者与消费者: 生产者线程负责生产产品 ... -
java多线程设计模式之队列通信
2013-03-06 13:51 2434Java实现多线程处理队列请求通信:客户端线程向请求队列中不断 ... -
Java读linux系统文件文件名乱码
2012-12-06 17:01 90581,问题描述 web应用想通过Java读取linux系统文件显 ... -
Java安全加密
2012-11-28 10:24 1916安全加密 目录 1 加密安全 1 1.1 应用的安全 1 ... -
图着色问题
2012-11-27 13:05 3059图着色问题 目录 1 图 ... -
JDK6新特性
2012-07-03 23:24 2859JDK6的新特性 JDK6的新特性之一_Desktop类 ... -
JDK7新特性
2012-07-03 15:39 3468JDK7新特性 一 JDK7新特性简介 准备 JDK7下载 ... -
JDK5新特性
2012-07-03 10:23 73JDK5.0新特性 1.自动封箱和自动解封(简单类型和封装类 ... -
java多线程
2012-06-15 15:12 1509Java多线程 目录 1 线 ... -
代理模式
2012-06-13 14:12 1311代理模式 目录 1 代理 ... -
java垃圾回收机制
2012-06-11 11:30 2526Java内存回收 目录 1 JAVA内存STACK和HE ...
相关推荐
实例的个数用配置文件InstanceLimit.cfg指定。例如,如果InstanceLimit.cfg的内容为2,则LimitInstanceClass最多可以同时存在2个对象。LimitInstanceClass的对象有一个整型成员变量id,保存对象的编号;有一个...
Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...
Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...
Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...
Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...
Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...
Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...
算法相关,密钥 Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象...
4. 客户端和服务器端基于Socket实现通信,服务器端需实现多线程功能,可同时处理、响应多个客户端的数据请求 5. 用户信息管理功能,普通用户登录后可对自己基本信息(姓名、性别、民族、出生日期、职务、密码等信息)...
之道 》,其中很多观点我看了很受启发,以前我也将"设计模式" 看成一个简单的解决方案,没有从一种高度来看待"设计模式"在软 件中地位,下面是我自己的一些想法: 建筑和软件某些地方是可以来比喻的 特别是中国传统建筑...
算法相关,密钥 Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象...
实例133 碰撞的球(多线程) 382 实例134 钟表(多线程) 387 实例135 模拟生产者与消费者 392 实例136 仿迅雷下载文件 396 第15章 图形编程 403 实例137 多变的按钮 403 实例138 自制对话框 405 实例139 ...
一、JAVA SE基础 1、开发语言基本包括:数据类型、循环控制语句、数组、方法 2、面向对象:最终是面向接口编程的,封装...JAVA提供多线程、提供动态下载程序代码的机制、安全性,它的操作以字节码(class)文件形式保存
JavaSE核心 异常处理、多线程基础、IO系统、网络编程、Java反射机制、JVM性能调优(JVM内存结构剖析、GC分析及调优、JVM内存参数优化)、Java泛型、JDK新特性 熟练掌握JavaSE核心内容,特别是IO和多线程;...
与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。...
8.3 面向对象的设计模式 241 实例156 Singleton单例模式 242 实例157 招聘(简单工厂模式) 243 实例158 同学聚会(工厂方法模式) 244 实例159 图书展(抽象工厂模式) 246 实例160 汽车...
8.3 面向对象的设计模式 241 实例156 Singleton单例模式 242 实例157 招聘(简单工厂模式) 243 实例158 同学聚会(工厂方法模式) 244 实例159 图书展(抽象工厂模式) 246 实例160 汽车适配器(Adapter适配器模式...
8.3 面向对象的设计模式 241 实例156 Singleton单例模式 242 实例157 招聘(简单工厂模式) 243 实例158 同学聚会(工厂方法模式) 244 实例159 图书展(抽象工厂模式) 246 实例160 汽车适配器...