- 浏览: 2832807 次
- 性别:
- 来自: 武汉
文章分类
- 全部博客 (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 769Java是时下最流行的编程语言之一。市面上也出现了适合初学者 ... -
深入理解java异常处理机制
2015-01-30 09:30 12841. 引子 try…catch…fi ... -
java 运行时参数设置
2015-01-07 09:13 825JVM的运行时参数: -Xms为执行单元内存的1/4, ... -
每个Java开发者都应该知道的5个JDK工具
2014-12-29 12:37 1108JDK是Java语言的软件开 ... -
使用双重锁判定可以大幅降低锁的征用
2014-12-29 12:30 710class ObjInstance { //单例 pri ... -
MAVEN Scope使用说明
2014-11-24 09:40 718在Maven的依赖管理中,经常会用到依赖的scope设置。这 ... -
Spring4 quartz job xml configuration
2014-11-11 09:46 14061. 定义job details public ... -
Add items into list in one line using guava
2014-11-10 10:54 696//@formatter:off fina ... -
配置动态读取(变化)文件 in Spring
2014-11-10 08:51 12961. 从环境变量中读取路径: <bean id=&q ... -
JAVA实现AES加密与解密
2014-11-04 15:34 619package com.eifesun.monitor.up ... -
Netty4.x分析
2014-07-31 11:06 1424官网定义: netty是一个异步、事件驱动的网络应用框架,用 ... -
Ways to sort lists of objects in Java based on multiple fields
2014-07-21 17:19 7381. the first way: Sorting wit ... -
how to parse a String to BigDecimal
2014-07-21 10:08 891private BigDecimal parsePrice( ... -
order list using google guava
2014-07-21 09:08 856Predicate<String> filter ... -
Java 读文件操作
2014-07-08 14:09 8591. only use java core, no exte ... -
怎样使Java 中测试按一定顺序执行
2014-03-10 11:27 1271@FixMethodOrder(MethodSorters. ... -
如何实现在当类初始化时,自动调动某个方法
2014-02-14 14:44 927有两种思路, 1. 将这个类实现为thread类 (or ... -
持续集成JenkinsAPI常见用法
2014-02-10 13:54 43jenkins(持续集成开源工具)提供了丰富的api接口,基 ... -
Sonar 安装与使用
2014-01-13 10:49 1699Sonar 是一个用于代码质量管理的开放平台。通过插件机制, ... -
源代码管理分析工具 Source Navigator的安装与使用
2014-01-13 09:51 1847Source-Navigator是原来redhat开发的一个 ...
相关推荐
操作系统课程设计报告 实现多线程通信同步互斥内存管理文件管理 图文并茂。
每个线程在对资源操作前都尝试先加锁,成功加锁才能操作,操作结束解锁。 资源还是共享的,线程间也还是竞争的, 但通过“锁”就将资源的访问变成互斥操作,而后与时间有关的错误也不会再产生了。 但,...
VC6.0实现线程的同步cpp文件,亲测可运行
设计要求:(1)每个生产者和消费者对有界缓冲区进行操作后,即时显示有界缓冲区的全部内容,当前指针位置和生产者/消费者线程的标识符.(2)生产者和消费者各有两个以上.(3)多个生产者或多个消费者之间须有共享对缓冲区...
本示例用于演示Delphi多对象等待实现的线程同步问题。运行示例程序,并尝试在输入框中输入有效的目录名,然后按下“添加到监视列表”按钮。 到被监视的目录中,做一些文件或者目录操作,例如创建文件、更名等。...
实现不同线程独立完成自己的任务,每个线程的任务都是向文件写入指定的字符
在下载管理器中实现多线程下载的逻辑,包括文件分块、断点续传等功能。 使用线程池来管理下载任务的线程,可以提高线程的复用性和效率。 在下载过程中处理线程同步和资源释放,确保线程安全性和资源的正确释放。 ...
Java文件传输是指在客户端和服务器之间通过网络传输文件的过程,可以实现文件的上传、下载和共享功能。 该实现通常基于TCP/IP或UDP等网络协议,确保文件在传输过程中的可靠性和稳定性。 功能特点: 文件上传:...
1. 建立三个线程,并且同时运行它们。...(3)、在定义Storage类中的setValue(int i) 和getValue ()方法时使用synchronized关键字,将其定义为同步方法 (4)、保存文件,调试并编译运行程序。 参考程序运行效果:
临界资源即那些一次只能被一个线程访问的资源,典型例子就是打印机,它一次只能被一个程序用来执行打印功能,因为不能多个线程同时操作,而访问这部分资源的代码通常称之为临界区。 锁机制 threading的Lock类,用该...
(2)其次创建两个线程分别对链表多次进行插入节点操作和多次删除插入操作,通过简单的互斥机制实现两个线程同时启用,相互不会发生冲突,实现互斥模型,主要验证方式是打印要插入节点数,删除节点数,删除失败节点...
以生产者消费者模型为基础,在Windows环境下创建一个控制台进程,在该进程中创建读者写者线程模拟生产者和消费者。写者线程写入数据,然后将数据放置在一个空缓冲区中供读者线程读取。读者线程从缓冲区中获得数据,...
创建一个包含两个线程的进程:线程 t1 和线程 t2,进程 p1 通过执行一系列内存操作来模拟内存分配活动,线程 t2 用于跟踪线程 t1 的内存行为,两个线程通过信号量进行同步。 线程 t1 执行的内存操作类型包括:分配...
2、通过实验三,我在 Nachos 上利用信号量实现了线程同步。阅读源码和理论课程相结合,对线程调度、线程切换、线程同步、生产者消费者模型等概念有了更深入的理解。 3、通过实验四和实验五,我在 Nachos 实现了具有...
该系统使用的程序设计语言是C++,采用Qt框架开发,其中算法实现时使用了QList、QMap、QQueue等类,借助于QThread类来实现四个线程的同步,对线程的挂起等操作使用了QMutex、QWaitCondition等类。系统中还涉及对音...
而消费者之间只有在对同一产品进行消费时才需要互斥,同时它们在消费过程结束时需要判断该消费对象是否已经消费完毕并清除该产品。 Windows用来实现同步和互斥的实体。在Windows中,常见的同步对象有:信号量...
Java多线程与线程安全实践-基于Http协议的断点续传.rar 是一个Java毕业设计项目,旨在探讨如何在Java中实现多线程和线程安全,以及如何基于Http协议实现断点续传功能。该项目提供了一个完整的源代码包,可以作为学习...
通信的 具体内容可根据自己的需要随意设计,要求能试验阻塞型读写过程中的各种情况,测试管道 的默认大小,并且要求利用 Posix 信号量机制实现进程间对管道的互斥访问。运行程序,观 察各种情况下,进程实际读写的...
用多进程同步方法解决生产者—消费者问题(c++源码) 1、每个生产者和消费者对有界缓冲区进行操作后,即时显示有界缓冲区的全部内容,当前指针位置和生产者/消费者进程的标识符。 2、生产者和消费者各有两个以上。 3...
设计要求:(1)每个生产者和消费者对有界缓冲区进行操作后,即时显示有界缓冲区的全部内容,当前指针位置和生产者/消费者线程的标识符.(2)生产者和消费者各有两个以上.(3)多个生产者或多个消费者之间须有共享对缓冲区...