- 浏览: 2870373 次
- 性别:
- 来自: 武汉
文章分类
- 全部博客 (1173)
- 名言警句 (5)
- 心情随笔 (50)
- 数据库 (57)
- Java基础 (241)
- J2EE框架 (91)
- 数据结构 (12)
- 程序设计 (21)
- WEB技术 (128)
- 网络日志 (12)
- IT资讯 (247)
- linux (64)
- solaris (2)
- 其它 (143)
- WebService (4)
- 日语学习 (2)
- 机器人 (5)
- Android (5)
- cgywin (3)
- Game (1)
- DWR (1)
- spring (8)
- canvas (1)
- Guava (3)
- Modbus (5)
- 测试 (6)
- mongodb (9)
- Quartz (2)
- Cron (1)
- windows (2)
- 持续集成 (1)
- bootstrap (3)
- 结对编程 (1)
- nodejs (1)
- Netty (1)
- 安全 (3)
- webstorm (2)
- sparkline (1)
- Job (1)
- git (3)
- Maven (3)
- knockout (5)
- jquery (1)
- bower (1)
- docker (1)
- confluence (4)
- wiki (1)
- GoogleMap (1)
- jekyll (10)
- ruby (2)
- npm (3)
- browserify (1)
- gulp (3)
- openwrt (1)
- discuz (3)
- 输入法 (1)
- JPA (1)
- eclipse (2)
- IntelliJ (1)
- css (1)
- 虚拟机 (1)
- 操作系统 (1)
- azkaban (2)
- scrum (1)
最新评论
-
pangxiea_:
你好, 想请问一下 Linux下 这么使用rxtxcomm 在 ...
使用Java进行串口通信 -
abababudei:
请教一下,这个您是怎么解决的:/dev/ttyS2enteri ...
Java应用程序的MODBUS通讯 -
xuniverse:
hannibal005 写道楼主,我问下 request.se ...
用javascript与java进行RSA加密与解密 -
atxkm:
找了一下午,终于找到了
gulp 拷贝文件时如何移除文件目录结构 -
kalogen:
gtczr 写道非常感谢,经过我自己的修改,已经完美实现。发出 ...
用javascript与java进行RSA加密与解密
采用了一个核心类:org.apache.commons.io.output.LockableFileWriter
该类在实例化的时候会在临时文件夹创建一个lock文件,close的时候删除该lock文件。
根据这个lock的存在与否来判断目标文件是否被锁定。
如果目标文件使用中,那么创建lock文件会抛出异常。
拿锁的代码:
//如果文件被锁,那么就持续的尝试拿锁60秒 LockableFileWriter writer = null; int step = 0; while(null == writer && step < 60){ try { writer = new LockableFileWriter(file); } catch (IOException e) { try { this.wait(1000); } catch (InterruptedException e1) { logger.error(e1); } step++; } } if(null == writer){ return; }
释放锁的代码
try { writer.close(); } catch (IOException e) { logger.error(" 释放锁出错", e); }
如果不想打开文件,但是又想锁定文件,不让LockableFileWriter 用。那么只好直接操作那个lock文件了。
//拿锁 String destFile = xxxxx.txt; File lockFile = null; boolean isLockCreated = false; int step = 0; while(isLockCreated == false && step < 60){ String lock = System.getProperty("java.io.tmpdir") + "/" + destFile + ".lck"; lockFile = new File(lock); try { isLockCreated = lockFile.createNewFile(); if(!isLockCreated){ try { this.wait(1000); } catch (InterruptedException e) { logger.error(e); } } } catch (IOException e) { try { this.wait(1000); } catch (InterruptedException e1) { logger.error(e1); } logger.error(e); } step++; } if(false == isLockCreated || null == lockFile){ return; } /*业务操作*/ //放锁 lockFile.deleteOnExit();
发表评论
-
高级Java程序员值得拥有的10本书
2015-05-04 07:24 810Java是时下最流行的编程语言之一。市面上也出现了适合初学者 ... -
深入理解java异常处理机制
2015-01-30 09:30 13271. 引子 try…catch…fi ... -
java 运行时参数设置
2015-01-07 09:13 865JVM的运行时参数: -Xms为执行单元内存的1/4, ... -
每个Java开发者都应该知道的5个JDK工具
2014-12-29 12:37 1139JDK是Java语言的软件开 ... -
使用双重锁判定可以大幅降低锁的征用
2014-12-29 12:30 746class ObjInstance { //单例 pri ... -
MAVEN Scope使用说明
2014-11-24 09:40 758在Maven的依赖管理中,经常会用到依赖的scope设置。这 ... -
Spring4 quartz job xml configuration
2014-11-11 09:46 14371. 定义job details public ... -
Add items into list in one line using guava
2014-11-10 10:54 721//@formatter:off fina ... -
配置动态读取(变化)文件 in Spring
2014-11-10 08:51 13231. 从环境变量中读取路径: <bean id=&q ... -
JAVA实现AES加密与解密
2014-11-04 15:34 659package com.eifesun.monitor.up ... -
Netty4.x分析
2014-07-31 11:06 1461官网定义: netty是一个异步、事件驱动的网络应用框架,用 ... -
Ways to sort lists of objects in Java based on multiple fields
2014-07-21 17:19 7731. the first way: Sorting wit ... -
how to parse a String to BigDecimal
2014-07-21 10:08 918private BigDecimal parsePrice( ... -
order list using google guava
2014-07-21 09:08 884Predicate<String> filter ... -
Java 读文件操作
2014-07-08 14:09 8861. only use java core, no exte ... -
怎样使Java 中测试按一定顺序执行
2014-03-10 11:27 1318@FixMethodOrder(MethodSorters. ... -
如何实现在当类初始化时,自动调动某个方法
2014-02-14 14:44 964有两种思路, 1. 将这个类实现为thread类 (or ... -
持续集成JenkinsAPI常见用法
2014-02-10 13:54 43jenkins(持续集成开源工具)提供了丰富的api接口,基 ... -
Sonar 安装与使用
2014-01-13 10:49 1730Sonar 是一个用于代码质量管理的开放平台。通过插件机制, ... -
源代码管理分析工具 Source Navigator的安装与使用
2014-01-13 09:51 1893Source-Navigator是原来redhat开发的一个 ...
相关推荐
在`JThreadSynch`这个压缩包文件中,我们可以预见到包含的Java源代码将展示以上的一种或多种机制,通过具体的示例代码来解释和实现生产者消费者问题的线程同步和互斥。通过学习和理解这个示例,开发者可以更好地掌握...
本篇文章将深入探讨三种在C++中实现多线程同步的方法:事件对象、关键代码段和互斥对象。 首先,我们来看**事件对象**。事件对象是一种信号机制,用于线程间通信和同步。在Windows API中,CreateEvent函数创建一个...
在Java编程语言中,实现多线程文件传输是一种优化程序性能、提高系统资源利用率的有效方法。多线程允许我们同时处理多个任务,这对于大文件传输或需要并行处理的场景尤其有用。本篇文章将深入探讨如何使用Java实现多...
在本文中,我们将深入探讨如何在VC++6.0环境下使用互斥量(Mutex)同步线程,以实现文件读取进度条的功能。这是一项在多线程编程中常见的任务,尤其是在开发用户界面丰富的应用程序时,为了提供更好的用户体验,我们...
`Thread.cpp`和`DerivedThread.cpp`可能包含了线程类的实现,这些类可能封装了线程的创建、运行以及线程间的同步操作。线程类通常包含一个运行函数,如`Run()`,在这个函数中执行线程的任务。而`TestLock.cpp`和`...
在本文中,我们将深入探讨如何使用Microsoft Visual C++(简称VC)开发一个多线程的同步聊天及文件传输应用。这个项目结合了网络编程、多线程技术和文件操作,旨在实现客户端和服务端之间的实时通信和文件交换。 ...
在实现文件同步时,需要正确处理文件的读取、写入和移动操作。 2. **文件监控**:为了实现实时同步,可能使用了FileSystemWatcher类,它可以监听指定目录下的文件和目录变更事件,如创建、修改、删除和重命名。 3....
在Python编程中,多线程同步对于文件读写控制至关重要,因为如果不加以控制,多个线程同时访问同一文件可能会导致数据不一致或者错误。这里我们将深入探讨如何在Python中使用多线程同步来确保文件读写的安全性。 ...
在给定的“多线程实现文件中字母数字及其他字符的分配”项目中,我们看到一个旨在利用多线程来读取文件、分析字符并进行某种形式的分配的任务。下面我们将深入探讨这个主题,包括多线程的基本概念、Linux环境下的...
总的来说,"易语言多线程读取大文本文件"涉及到的知识点包括:易语言的线程编程、文件I/O操作、API函数的使用、字符编码转换以及线程同步与资源管理。通过熟练掌握这些知识点,开发者可以编写出高效、稳定的程序,...
总之,C++实现的多线程文件传输结合了多线程、网络通信和文件I/O等关键技术,通过合理的设计和优化,可以在保证数据完整性的前提下,大大提高文件传输效率。在实际开发中,需要不断调整和测试,以找到最佳的性能与...
在OSTcb.txt这个文件中,很可能包含了多线程的实现代码,包括线程创建、同步、通信和销毁等关键操作。 接下来是文件系统。文件系统是操作系统中负责组织和管理磁盘上数据的组件。它定义了文件的命名规则、存储结构...
本文将深入探讨如何在C++中实现多线程以及如何利用信号量进行线程同步。 首先,我们需要理解什么是多线程。在单线程程序中,执行流是线性的,而多线程允许程序同时执行多个不同的任务。这通常会提高程序的响应性和...
2. Handler/Looper:创建一个后台线程,通过Handler和Looper与主线程通信,实现文件的分块上传。 3. ExecutorService:Java提供的线程池服务,可以创建固定数量的线程,适合处理并发上传任务,避免了频繁创建销毁...
本文将深入探讨如何在Delphi中利用多线程技术来实现日志文件的高效读写与管理。 首先,了解多线程的概念。在单线程环境下,所有的操作都是顺序执行的,如果在处理日志时阻塞了主线程,可能会导致用户界面的卡顿。而...
在这个类中,我们将实现文件拷贝的具体逻辑。 2. **重写Execute方法**:`Execute`方法是线程运行的主要入口点。在这里,我们需要编写文件拷贝的代码。通常包括打开源文件、创建目标文件、读取源文件数据并写入目标...
本压缩包“多线程操作共享文件.zip”显然是一个关于如何在Delphi中实现多线程间互斥访问共享文件的示例项目。 标题“多线程操作共享文件.zip”直接揭示了主题,即通过多线程技术处理同一份文件,这在分布式系统、...
在本文中,我们将深入探讨如何使用C#编程语言在Windows操作系统环境下实现多线程同步打印文章的实验。这个实验的核心是创建两个独立的线程,一个用于文章的下载,另一个用于文章的打印,同时利用线程同步机制确保...
本教程聚焦于如何利用多线程实现串口(Serial Port)读写数据及文件的读写操作,这对于理解和开发高效通信系统至关重要。 首先,我们要理解什么是串口通信。串口通信是一种基于串行数据传输的通信方式,它通过一条...