- 浏览: 1267573 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (896)
- spring4 (14)
- hibernate3 (26)
- spring2 (35)
- struts2 (55)
- struts1 (15)
- 设计模式 (15)
- java (172)
- mybatis3 (11)
- sql (17)
- mysql (13)
- jbpm (10)
- J2EE (45)
- tools (29)
- js (83)
- 数据结构 (13)
- Html (26)
- web (22)
- flex (33)
- Oracle (57)
- linux (49)
- 算法 (6)
- 其它 (12)
- easyui (1)
- bootstrap (13)
- xml (2)
- tomcat (1)
- redis (10)
- activemq (2)
- webservice (11)
- maven (2)
- springboot (1)
- ubuntu (1)
- python (14)
- rocketmq (1)
- springcloud (10)
- opencv (1)
最新评论
-
mike_eclipse:
Hashtable是线程不安全的吗?好像是线程安全的吧?
多线程之集合类 -
July01:
推荐用StratoIO打印控件,浏览器和系统的兼容性都很好,而 ...
lodop打印控件 -
xingcxb:
经过测试,假的,依旧会出现中文乱码!!!!store方法里面采 ...
java 读写Properties文件,不会出现中文乱码 -
tiger20111989:
...
Spring注解方式管理事务 -
zw7534313:
...
js 文字上下滚动 无间断循环显示
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileUtil {
FileInputStream fis;
byte[] buf=new byte[1024];
FileOutputStream fos;
int len=0;
public static void main(String[] args) {
FileUtil fu=new FileUtil();
// String srcFile="F:/test.properties";
// String desFile="F:/test.txt";
// String srcFile="F:/B-初步.ppt"; //java.io.FileNotFoundException,为啥 不支持ppt呢?
// String srcFile="F:/部署文档.doc"; //中文 可以访问,word 版本要一致,不然文件打不开
// String srcFile="F:/t.doc";
String srcFile="F:/t.ppt"; //支持ppt,但是打不开文件
String desFile="F:/test.ppt";
fu.init(srcFile, desFile);
fu.new ReadFileThread().start();
fu.new WriteFileThread().start();
}
/**
* 初始化,输入流,输出流
* @param srcFile 读取的文件名
* @param desFile 写入的文件名
*/
void init(String srcFile,String desFile){
try {
fis=new FileInputStream(srcFile);
fos=new FileOutputStream(desFile);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
/**
* 读取一个文件到buf数组中,先读一次,再wait()
* @author Administrator
*
*/
class ReadFileThread extends Thread{
public void run(){
try{
synchronized(this){
if(len!=0){
try {
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
len=fis.read(buf);
notify(); //唤醒写入线程
}
}
catch(IOException e){
e.printStackTrace();
}
finally{
}
}
}
/**
* 写入另一个文件,如果读取的长度len!=0,就把buf的内容写入到另一个文件,并且把len=0;换醒读取线程
* @author Administrator
*
*/
class WriteFileThread extends Thread{
public void run() {
synchronized(this){
if(len==0){
try {
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
try {
fos.write(buf,0,len);
} catch (IOException e) {
e.printStackTrace();
}
len=0;
notify();
}
}
}
}
注意:java.lang.IllegalMonitorStateException: current thread not owner?
对于上述方法,只有在当前线程中才能使用,否则报运行时错误java.lang.IllegalMonitorStateException: current thread not owner.
从实现角度来分析:
在线程调用wait()方法时,需要把它放到一个同步段里,即应该在调用前使用
1synchroed(this){
2 thread.wait();
3
4}
5
否则将会出现"java.lang.IllegalMonitorStateException: current thread not owner"的异常。
发表评论
-
服务端推送multipart/x-mixed-replace
2023-12-07 15:26 274往网页分批推送数据:boundary=END,总头--> ... -
使用httpclient提交post请求
2020-08-22 08:35 395import org.apache.http.HttpEnt ... -
Groovy超强的Java动态计算能力
2020-06-25 09:03 596//Groovy超强的Java动态计算能力 groovy-2. ... -
bsh(BeanShell)动态执行java代码
2020-06-25 07:59 872import java.util.Date; /** * B ... -
延时任务处理订单超时方案
2020-05-23 16:05 902JDK的延迟队列 方案是利用JDK自带的DelayQueue ... -
HttpsURLConnection
2020-04-29 10:51 726import java.net.URL; import jav ... -
Log4j的ConversionPattern参数的格式含义
2020-04-22 14:23 425Log4j的ConversionPattern参数的格式含义 ... -
thread 的join
2020-04-16 18:02 320java里面也有这个方法,Java Thread中, join ... -
GZIPOutputStream压缩文件
2020-04-16 17:52 707import java.io.BufferedReader; ... -
软引用SoftReference的使用
2020-04-16 15:48 503软引用SoftReference的使用 SoftRefere ... -
Fastjson
2020-04-15 14:53 326import java.util.ArrayList; imp ... -
6位随机数
2020-04-14 09:47 710import org.apache.commons.lang. ... -
Java加密和数字签名
2020-04-14 09:38 349Java加密和数字签名 消息摘要 这是一种与消息认证码结合使 ... -
DES加密、解密
2020-04-02 16:42 364import java.security.SecureRand ... -
Java利用 AES/ECB/PKCS5Padding 算法加解密
2020-04-02 11:19 939对称加密、解密 import javax.crypto.Ci ... -
springboot中使用springmvc的拦截器-HandlerInterceptorAdapter
2018-12-13 16:04 1300springboot中使用springmvc的拦截器-Hand ... -
aspectj连接点
2018-12-13 15:55 520切点指示符 切点指示符 ... -
spring之AspectJ面向切面编程
2018-12-13 14:15 820spring之AspectJ面向切面编程 面向切面编程,实现 ... -
设计模式之策略模式
2018-05-30 21:17 489public class Person { priva ... -
使用反射将对象转Map
2018-05-27 17:33 654//使用反射将对象转Map<String, St ...
相关推荐
了解多线程所带来的安全风险.mp4 从线程的优先级看饥饿问题.mp4 从Java字节码的角度看线程安全性问题.mp4 synchronized保证线程安全的原理(理论层面).mp4 synchronized保证线程安全的原理(jvm层面).mp4 单例问题...
多线程锁 并发下的集合类 List Set Map Callable接口 线程创建的方式 callable / runnable FutureTask JUC常用辅助类 CountDownLatch (减少计数器) CyclicBarrier(加法计数器) Semaphore(信号量,流量控制) ...
与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。...
第2节理解多线程与并发的之间的联系与区别 [免费观看] 00:11:59分钟 | 第3节解析多线程与多进程的联系以及上下文切换所导致资源浪费问题 [免费观看] 00:13:03分钟 | 第4节学习并发的四个阶段并推荐学习并发的资料 ...
第2节理解多线程与并发的之间的联系与区别 [免费观看] 00:11:59分钟 | 第3节解析多线程与多进程的联系以及上下文切换所导致资源浪费问题 [免费观看] 00:13:03分钟 | 第4节学习并发的四个阶段并推荐学习并发的资料 ...
线程通讯:线程之间通过 wait,notify 等⽅方式通讯。保证每次上下⽂文切换都是有意义的。减 少⽆无谓的线程切换。 java.nio.中提供了了 Selector:通过调⽤用Selector的select⽅方法可以从所有的Channel中找到...
│ 高并发编程第二阶段16讲、多线程读写锁分离设计模式讲解-上.mp4 │ 高并发编程第二阶段17讲、多线程读写锁分离设计模式讲解-中.mp4 │ 高并发编程第二阶段18讲、多线程读写锁分离设计模式讲解-下.mp4 │ 高...
│ 高并发编程第二阶段16讲、多线程读写锁分离设计模式讲解-上.mp4 │ 高并发编程第二阶段17讲、多线程读写锁分离设计模式讲解-中.mp4 │ 高并发编程第二阶段18讲、多线程读写锁分离设计模式讲解-下.mp4 │ 高...
A.sleep() B.notify() C.wait() D.join() 正确答案:B 您的答案: 本题解析: 暂无解析 2.以下标识符中,不是Java语言关键字的是()。 A.wait B.new C.long D.switch 正确答案:A 您的答案: 本题解析: 暂无解析 3....
与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。...
第2节理解多线程与并发的之间的联系与区别 [免费观看] 00:11:59分钟 | 第3节解析多线程与多进程的联系以及上下文切换所导致资源浪费问题 [免费观看] 00:13:03分钟 | 第4节学习并发的四个阶段并推荐学习并发的资料 ...
临界区的设置是为了保证其内部的代码执行的原子性和完整性,但因为临界区在任何时间只允许线程串行通过,这和我们使用多线程的初衷是相反的。如果在多线程程序中大量使用synchronized,或者不适当的使用它,会造成...
第2节理解多线程与并发的之间的联系与区别 [免费观看] 00:11:59分钟 | 第3节解析多线程与多进程的联系以及上下文切换所导致资源浪费问题 [免费观看] 00:13:03分钟 | 第4节学习并发的四个阶段并推荐学习并发的资料 ...
连最基本的资源释放都做不好,还谈什么多线程编程. 6.EJB规范规定EJB中禁止的操作有哪些?(15分) 共有8点,答出下列3-4点得满分. 1.不能操作线程和线程API(线程API指非线程对象的方法如notify,wait等) 2....
Java程序.............................................................................................6 1.3.1 Java程序的结构 ...........................................................................
25 JAVA8 与元数据.................................................................................................................................25 2.4. 垃圾回收与算法 .................................
25 JAVA8 与元数据.................................................................................................................................25 2.4. 垃圾回收与算法 .................................
16.2 多线程化 330 16.3 服务器捆绑 333 16.4 认证 336 16.5 超时和重传 338 16.6 调用语义 342 16.7 客户或服务器的过早终止 343 16.8 XDR:外部数据表示 345 16.9 RPC分组格式 361 16.10 小结 ...