- 浏览: 264163 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (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 3732Java validation 1. java验证器 在 ... -
Memo class备注类信息
2014-03-18 09:52 910Memo Class 1. 什么是Memo Class Mem ... -
java annotation注解
2014-01-24 18:01 9571. Annotation的声明方式 An ... -
Java RMI
2013-03-28 15:12 1744Java Rmi 目录 1 JAVA RMI 1 ... -
java内部类
2013-03-19 16:25 1068Java内部类 目录 1 JAVA ... -
java多线程设计模式之订单模式
2013-03-11 14:00 2717Java多线程实现订单模式: 客户端线程向服务端发起请求后, ... -
java多线程设计模式之线程池处理请求
2013-03-08 17:50 1829Java实现线程池处理请求: 客户端线程发出请求,请求存入请 ... -
java多线程设计模式之异步处理请求
2013-03-08 12:36 4530Java实现多线程异步处理请求: Java实现多线程异步处理 ... -
java多线程设计模式之读写文件模式
2013-03-07 17:56 1608Java实现多线程读写数据 ... -
java多线程设计模式之生产者与消费者
2013-03-07 11:34 1081Java实现多线程生产者与消费者: 生产者线程负责生产产品 ... -
java多线程设计模式之队列通信
2013-03-06 13:51 2519Java实现多线程处理队列请求通信:客户端线程向请求队列中不断 ... -
Java读linux系统文件文件名乱码
2012-12-06 17:01 91841,问题描述 web应用想通过Java读取linux系统文件显 ... -
Java安全加密
2012-11-28 10:24 2005安全加密 目录 1 加密安全 1 1.1 应用的安全 1 ... -
图着色问题
2012-11-27 13:05 3150图着色问题 目录 1 图 ... -
JDK6新特性
2012-07-03 23:24 2906JDK6的新特性 JDK6的新特性之一_Desktop类 ... -
JDK7新特性
2012-07-03 15:39 3534JDK7新特性 一 JDK7新特性简介 准备 JDK7下载 ... -
JDK5新特性
2012-07-03 10:23 73JDK5.0新特性 1.自动封箱和自动解封(简单类型和封装类 ... -
java多线程
2012-06-15 15:12 1585Java多线程 目录 1 线 ... -
代理模式
2012-06-13 14:12 1399代理模式 目录 1 代理 ... -
java垃圾回收机制
2012-06-11 11:30 2569Java内存回收 目录 1 JAVA内存STACK和HE ...
相关推荐
##### 多线程爬虫设计模式 - **MVC设计模式**:将爬虫分为模型(Model)、视图(View)和控制器(Controller)三个部分,提高代码的可维护性和可扩展性。 - **抽象类与继承**:通过定义抽象基类如`AbstractCrawler`...
这个"java实验"的压缩包显然提供了学习和实践Java基础及高级特性的资源,特别是关于文件操作、多线程以及图形用户界面(GUI)和网络编程。 1. **文件操作**: 在Java中,我们可以使用`java.io`包来处理文件和流。...
总的来说,Java Swing多线程下载器结合了Java的GUI编程、多线程技术以及文件操作,为用户提供了一个功能强大的下载工具。开发这样一个程序需要深入理解Java的并发编程和Swing组件的使用,同时也需要对网络通信和文件...
Java多线程是Java编程中的核心概念,它允许程序同时执行多个任务。在搜索引擎的实现中,多线程技术用于并行处理网页抓取、索引构建和查询服务等不同任务,提高系统效率。例如,可以创建一个线程池,每个线程负责爬取...
总的来说,这个“java(简易)多线程HTTP服务器”项目涵盖了Java网络编程、多线程、HTTP协议理解以及文件操作等多个核心知识点。通过实践,开发者不仅可以深入理解这些概念,还能提升解决问题和设计系统的能力。
Java多线程结合界面开发实例:财务管理系统源代码和效果图 在这个实例中,我们将学习如何使用Java多线程技术结合界面开发来实现一个财务管理系统。这个系统能够实时显示财务状况,并且具有保存功能。 知识点1:...
在Java编程环境中,开发一个具有基础记事本功能的程序是一项常见的练习,它涵盖了文件操作、文本处理以及用户界面设计等多个关键知识点。以下是对这些核心概念的详细解释: 1. **文件操作**: - **读取文件**:在...
Java单例模式是一种常用的设计模式,它保证一个类只有一个实例,并提供全局访问点。这种模式在需要频繁创建和销毁对象的场景中,或者当对象昂贵时(如数据库连接),能够节省系统资源,提高效率。本篇文章将深入探讨...
6. **设计模式**: 高质量的软件通常会遵循一定的设计模式,如模型-视图-控制器(MVC)模式,这有助于代码的组织和维护。在这个项目中,开发者可能采用了MVC来分离业务逻辑、用户界面和数据。 7. **测试与调试**: ...
根据给定的信息,“Java设计模式之禅”是一本专注于Java设计模式的专业书籍,旨在帮助不同层次的开发人员理解和应用各种设计模式。以下是对该书提到的一些关键知识点的详细阐述: ### 一、策略模式(Strategy ...
### Java多线程技术 Java中的多线程技术是指在同一个程序中可以同时运行多个线程来执行多个任务。Java提供了一套完整的线程管理和同步机制,使得多线程编程变得简单而强大。在Java中,可以通过实现Runnable接口或...
10. **设计模式**:在实现文件上传服务时,可以借鉴设计模式,如工厂模式用于创建数据库连接,单例模式用于保证服务器Socket实例的唯一性,观察者模式用于通知文件上传完成后的后续处理等。 以上就是使用Java ...
标题 "java 读取Ftp指定位置的文件解析并入库" 涉及到的是使用Java编程...同时,为了提高代码质量和可维护性,遵循良好的编程规范和设计模式也很重要。在实际开发中,还应注意安全性,如防止SQL注入、保护用户凭据等。
6. **设计模式(Design Patterns)**:在大型项目中,设计模式是组织代码结构的重要工具。例如,单例模式可能用于确保文件系统的实例只有一个,工厂模式可以用于创建文件对象,观察者模式可以用于实时更新文件状态。...
在“java的一些图片,网络编程,多线程,数据结构”这个主题中,我们可以深入探讨以下几个重要的Java编程知识点: 1. **Java 图片处理**: Java提供了多种处理图像的API,如`java.awt.image`和`javax.imageio`包。...
总之,"多线程下载 java 版"是一个综合性的项目,涵盖了并发编程、网络编程、文件I/O、异常处理、设计模式等多个Java核心知识点,同时也考虑了用户体验和测试需求。通过这样的项目,开发者可以提升自己的全面技能。
Java多线程编程概念 - **知识点描述**:多线程编程是指在一个进程中同时运行多个线程的技术。Java语言提供了强大的线程管理功能,使得开发多线程应用程序变得相对简单。 - **详细说明**: - **程序**:计算机...
在Java成绩管理系统中,开发者可能使用了Java的核心库,如集合框架、IO流、多线程以及异常处理等,来实现系统的功能。 二、文件保存数据 该系统使用文件保存数据,这是典型的文件I/O操作。Java的`java.io`包提供了...
- 在实际应用中,可能还需要考虑错误处理、断线重连、多线程处理等多个连接、文件传输进度显示等功能。 5. **安全性与性能** - 文件传输的安全性是重要考量,可以通过加密传输或使用安全套接层(SSL/TLS)来保护...
Java作为一种广泛应用的面向对象编程语言,其灵活性和强大的功能使其成为实现设计模式的理想选择。本资源提供了23种设计模式的Java实现,通过具体的代码示例帮助开发者深入理解并掌握这些模式。 1. **单例模式...