java控制多线程同时写一个文件】的更多相关文章

最近出现一个需求,大体要做的就是控制多线程同时操作一个文件.当时第一个反应是不要用synchronized,太low了,然后我就使用了读写锁ReentrantReadWriteLock,然后写完静下来和业务结合在一起分析一下,结果尴尬了.因为文件名可能是别的线程刚刚生成的带上了时间戳,线程A写orders_201904171130.xls文件,线程B写orders_201904171131.xls文件,这个时候实际上时不能阻塞的.Lock没办法像synchronized关键字一样,给定一把锁,锁…
在java程序当中怎么获取一个文件的路径? * 当这个文件在类路径下的时候(在src/bin目录下的时候): String absolutePath = Thread.currentThread().getContextClassLoader().getResource("从类的根路径下作为起点的文件路径").getPath(); * 当这个文件不在类路径下,在Context-Root下的时候: ServletContext application = this.getServletC…
创建一个复制功能类,继承Thread类,重写run()方法,把FileInputStream和FileOutputStream输入输出流写在run()方法内.示例代码如下: import java.io.*; import java.text.DecimalFormat; /** * 文件复制类 * @author Administrator * */ public class FileCopy extends Thread { private File src;//待读取的源文件 privat…
1.先将一张图片拖入‘文件上传’的目录下,利用socket把这张图片写到叫‘yuan’的文件中 2.代码: #模拟服务端 import subprocess import os import socket sk=socket.socket() print(sk) address=('127.0.0.1',8080) sk.bind(address) BASE_DIR=os.path.dirname(os.path.abspath(__file__))#获取绝对路径 sk.listen(3) pr…
(1)首先,必须保证java的所有路径都设置好,在dos提示符下输入jar -help出现C:\Documents and Settings\dly>jar -help非法选项:h用法:jar {ctxu}[vfm0Mi] [jar-文件] [manifest-文件] [-C 目录] 文件名 ...选项:    -c  创建新的存档    -t  列出存档内容的列表    -x  展开存档中的命名的(或所有的]文件    -u  更新已存在的存档    -v  生成详细输出到标准输出上    -…
1.相似度定义 我们定义,则,我们设,则,|C|=s,则相似度p=,p(0,1) 2.相似度检测算法设计 算法设计: 定义4个字符为一个字符串,将T1,T2分割成若干字符串,若剩余字符不足4个,则以空格补全.将分割后的T1T2计数,记下|T1|=n,|T2|=m,s=0:在T1中取出第一字符串,检测是否在T2中,若存在,则s+1,并删除与被检测字符串相同的字符串,循环到T2检测,直到T2中不存在被检测的字符串,循环到T1,提出下一个被检测字符串,到T2中检测:如此循环检测,直到T1中的所有字符串…
package net.jasonjiang.thread; import java.io.IOException; public class ThreadTestNew { public static void main(String[] args) throws IOException { final Test obj = new Test(); new Thread() { public void run() { obj.m1(); } }.start(); new Thread() {…
<?php header("content-type:text/html;charset=utf-8"); $fp = fopen("lock.txt","w+"); if(flock($fp, LOCK_EX)){// 进行排它型锁定 fwrite($fp,"Write something here\n"); flock($fp, LOCK_UN);// 释放锁定 }else{ echo "Couldn't…
package cn.it.zuoye5; import java.io.File;import java.util.HashMap;import java.util.Iterator;import java.util.Map;import java.util.Scanner;import java.util.Set; /** 键盘录入一个文件夹路径,统计该文件夹(包含子文件夹)中每种类型的文件及个数,注意:用文件类型(后缀名,不包含.(点),如:"java","txt&qu…
程序员是诗人,应该写一些有思想意义的code,而不是每天重复造轮子,写一些低成本的业务逻辑. ---------------------------------一个脚本仔的心声 由于目前公司使用CI框架,也遇到过需要大量新建controller,model等的新需求情况,我就在想是否能把一些公用的代码通过批量初始化成文件,减少不必要的重复书写.趁着阶段性上线间隙,我开始写这个基于命令脚本方式的自动化脚手架.基于CI,但是思想是适合任何不带官方脚手架功能的项目.(例如yii有官方的gii,cake…
手写队列: package dataStucture2.stackandqueue; import com.lt.datastructure.MaxHeap.Queue; import dataStucture2.array.MyDynamicArray; /** * 基于Java动态数组手写一个队列 * * * @param <E> */ public class MyArrayQueue<E> implements Queue<E> { // 基于数组 privat…
最近在写一个大量小文件直接压缩到一个zip的需求,由于zip中的entry每一个都是独立的,不需要追加写入,也就是一个entry文件,写一个内容, 因此直接使用了多线程来处理,结果就翻车了,代码给出了如下的错误:write beyond end of stream! 下面直接还原当时的代码场景: 1 public class MultiThreadWriteZipFile { 2 3 private static ExecutorService executorService = Executo…
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; im…
package com.beiwo.homework; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; public class demo5 { /** * 在程序中写一个"HelloJavaWorld你好世界"输出到操作系统文件Hello.txt文件中 * * 程序分析:文件写入,要用到输出流FileOutputStream * 步骤: * 1.找到目标文件 * 2.建…
用java写一个servlet,可以将放在tomcat项目根目录下的文件进行下载,将一个完整的项目进行展示,主要有以下几个部分: 1.servlet部分   Export 2.工具类:TxtFileUtil 3.web.xml import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.net.URLEncoder; imp…
package com.ljn.base; /** * @author lijinnan * @date:2013-9-12 上午9:55:32 */ public class IncDecThread2 { /** * 测试次数 */ public static final int TEST_COUNT = 20; /* * 题目:用JAVA写一个多线程程序,写四个线程,其中二个对一个变量加1,另外二个对一个变量减1 * 两个问题: * 1.线程同步--synchronized * 2.线程之…
题目:http://wenku.baidu.com/view/d66187aad1f34693daef3e8a.html 启动三个线程,分别打印A B C,现在写一个程序 循环打印ABCABCABC.... 本文分别使用wait.nofity和Semaphore来实现: wait.nofity版本 public class TestThread { public static void main(String[] args) { new Thread(new OrderThread(0,'A')…
先给结论:当然不是!! 可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致.一个文件中可以不含public类,如果只有一个非public类,此时可以跟文件名不同. 为什么一个java源文件中只能有一个public类? 在java编程思想(第四版)一书中有这样3段话(6.4 类的访问权限): 每个编译单元(文件)都只能有一个public类,这表示,每个编译单元都有单一的公共接口,用public类来表现.该接口可以按要求包含众多的支持包访问权限的类.如果在某个编译单…
JAVA一个文件写多个类,并且是同级类,需注意: 在一个.java文件中可以有多个同级类,  其修饰符只可以public/abstract/final/和无修饰符 public修饰的只能有一个,且必须要与文件名相同: 因为jvm虚拟机为了提高查找类的速度,使用import语句导入的时候,只会导入对应空间的文件名所对应的class文件,而public文件是大家都要使用的,因此直接导入这个类名对应的class文件即可. 若没有public的则可与文件名不同 Java编译器在编译的时候,如果整个Jav…
java nio 写一个完整的http服务器  支持文件上传   chunk传输    gzip 压缩      也仿照着 netty处理了NIO的空轮询BUG        本项目并不复杂 代码不多 我没有采用过多的设计模式    和套娃   使其看着比较简单易懂    起因: 想自己写一个web服务器  不使用tomcat 有时候想轻量级一点   代码量很少 成果: 现在已经支持文件上传下载,分块传输协议  gzip压缩  使用过程和java Servlet差不多 我封装两个对象 一个Htt…
package test.stream; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; /** * 通过控制台写一个html程序,并输出 * @author Frost.Yen * @E-…
java获取文件的属性如文件大小和修改时间: long mysize = file.length();long lastModified = file.lastModified();System.out.println(“大小:”);SimpleDateFormat dateFormat = new SimpleDateFormat(“YYYY-MM-dd HH:mm:ss”);//注意大小写是不一样的,一般返回时间和日期都是以毫秒和字节这些基本的单位 // dateFormat.format(…
实现线程并发有两种方式:1)继承Thread类:2)实现Runnable接口. 线程基础 1)程序.进程.线程:并行.并发. 2)线程生命周期:创建状态(new一个线程对象).就绪状态(调用该对象的start()方法).执行状态(run()方法体的执行).阻塞状态(sleep()/wait()方法的调用).终止状态(destroy()/stop()非正常结束.或.run()方法体跑完后正常结束).         另外从阻塞状态到执行状态,可用方法notify()/notifyAll(). 定义…
在本系列前两篇文章中,我们向大家展示了如何通过精炼的Java代码实现一个简单的区块链.包括生成块,验证块数据,广播通信等等,这一篇让我们聚焦在如何实现 PoW算法. 大家都无不惊呼比特币.以太坊及其他加密电子货币的持续狂热,特别是对于刚接触这个领域的新手,不断得听到张三李四通过 GPU “挖矿”而聚集价值数万乃至数百万加密电子货币.那么“挖矿”到底是什么? 它是如何工作的? 相信对于程序员来说,没有什么比自己动手实践一遍“挖矿”算法更好的学习办法了. 在这篇文章中,让我们一起逐个解读每一个问题,…
Java 创建一个线程的三种方式 多线程即在同一时间,可以做多件事情. 创建多线程有3种方式,分别是继承线程类,实现Runnable接口,匿名类 步骤 1 : 线程概念 首先要理解进程(Processor)和线程(Thread)的区别 进程:启动一个LOL.exe就叫一个进程. 接着又启动一个DOTA.exe,这叫两个进程. 线程:线程是在进程内部同时做的事情,比如在LOL里,有很多事情要同时做,比如"盖伦" 击杀"提莫",同时"赏金猎人"又在击…
前言 Java设计模式9:代理模式一文中,讲到了动态代理,动态代理里面用到了一个类就是java.lang.reflect.Proxy,这个类是根据代理内容为传入的接口生成代理用的.本文就自己写一个Proxy类出来,功能和java.lang.reflect.Proxy一样,传入接口.代理内容,生成代理. 抛砖引玉吧,个人觉得自己写一些JDK里面的那些类挺好的,写一遍和看一遍真的是两个不同的概念,写一遍既加深了对于这些类的理解.提升了自己的写代码水平,也可以在写完之后对比一下自己的实现有哪些写得不好…
文件加密器,操作过程肯定涉及到文件选择器的使用,所以这里以文件加密器为例.下例为我自己写的一个文件加密器,没什么特别的加密算法,只为演示文件选择器JFileChooser的使用. 加密器界面如图: 项目目录结构如图: 下面贴出各个文件的源代码: MainForm.java package com.lidi; import javax.swing.*; import java.awt.*; public class MainForm extends JFrame { /** * 构造界面 * *…
框架的东西太复杂也难以讲通,直接上代码: 一.首先得配置环境 和导入必要的jar包 有一些重要的如下: Filter文件夹下的SafetyFilter.java   model文件夹下的 GlobalNames.java   web文件下的MySpringContext.java    baseAction.java   BusinessException.java interceptor文件夹下的 AuthorizationInterceptor.java    ExceptionInterc…
JAVA调用C语言写的SO文件 因为工作需要写一份SO文件,作为手机硬件IC读卡和APK交互的桥梁,也就是中间件,看了网上有说到JNI接口技术实现,这里转载了一个实例 // 用JNI实现 // 实例: // 创建HelloWorld.java class HelloWorld { private native void print(); public static void main(String[] args) { new HelloWorld().print(); } static { Sy…
这里只是说明多线程下载的理论基础,嘿嘿,并没有写多线程下载的代码,标题党了,但是我相信,看完这个代码就应该能够多线程的方式去下载一个文件了. 多线程下载是需要服务器支持的,这里并没有判断服务器不支持的情况. 其原理 在发送 http 请求时标记头文件,告诉服务器我需要这个文件的 第几个字节 到 第几个字节.如果服务器不支持让你分段取文件,可以想想看服务器会怎么做. 没错,他把整个文件给你了. 一定得判断 服务器不支持 的情况. public void Worker() { string url…