[ThinkingDog]是一个积极向上、乐观、热心的人。
沉思的狗の博客
[ThinkingDog]欢迎您的光临,请多多指教!
线程通信--拷贝文件(仿此可以做网络间的数据通讯)
import
java.io.File;
import
java.io.FileInputStream;
import
java.io.FileOutputStream;
public
class
ThreadCommitTest
{
public
static
void
main(String[] args)
throws
Exception
{
(
new
ReadWriteThread(
true
)).start();
(
new
ReadWriteThread(
false
)).start();
}
static
class
ReadWriteThread
extends
Thread
{
private
static
String inFileName_
=
"
f:\\Fetion2006Setup.zip
"
;
private
static
String outFileName_
=
"
d:\\Fetion2006Setup.zip
"
;
private
static
Boolean lock_
=
new
Boolean(
false
);
public
static
int
LEN_PERCENT
=
1000000
;
private
boolean
isRead_;
private
FileOutputStream writer_;
private
FileInputStream reader;
private
int
nowlen;
private
long
len;
private
static
byte
[] value_;
private
static
boolean
isOver_
=
false
;
public
ReadWriteThread(
boolean
isRead)
throws
Exception
{
isRead_
=
isRead;
if
(isRead)
{
reader
=
new
FileInputStream(inFileName_);
nowlen
=
0
;
len
=
(
new
File(inFileName_)).length();
}
else
{
writer_
=
new
FileOutputStream(outFileName_);
}
}
public
void
run()
{
while
(
true
)
{
if
(isOver_)
break
;
try
{
synchronized
(lock_)
{
if
(isRead_
&&
value_
==
null
)
{
int
charLen
=
LEN_PERCENT;
if
(nowlen
+
LEN_PERCENT
>
len)
{
charLen
=
(
int
)(len
-
nowlen);
}
nowlen
+=
charLen;
if
(charLen
<=
0
)
{
isOver_
=
true
;
reader.close();
}
if
(
!
isOver_)
{
value_
=
new
byte
[charLen];
reader.read(value_);
}
}
else
if
(
!
isRead_
&&
value_
!=
null
)
{
if
(isOver_)
{
writer_.flush();
writer_.close();
break
;
}
else
{
writer_.write(value_);
writer_.flush();
value_
=
null
;
}
}
lock_.notifyAll();
}
}
catch
(Exception e)
{
System.out.println(
"
-------
"
+
e
+
"
-------
"
);
}
}
System.out.println((isRead_
?
"
Reader
"
:
"
Writer
"
)
+
"
Over
"
);
}
}
}
发表于 2007-05-08 16:40
沉思的狗
阅读(259)
评论(0)
编辑
收藏
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
管理
<
2007年5月
>
日
一
二
三
四
五
六
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
导航
BlogJava
首页
发新随笔
发新文章
联系
聚合
管理
统计
随笔: 115
文章: 1
评论: 86
引用: 0
常用链接
我的随笔
我的文章
我的评论
我的参与
最新评论
留言簿
(5)
给我留言
查看公开留言
查看私人留言
随笔档案
(115)
2015年1月 (1)
2011年5月 (12)
2011年4月 (2)
2010年9月 (2)
2010年8月 (4)
2009年9月 (1)
2009年6月 (1)
2009年3月 (1)
2008年6月 (1)
2008年1月 (2)
2007年7月 (2)
2007年6月 (2)
2007年5月 (4)
2007年4月 (1)
2007年1月 (1)
2006年12月 (1)
2006年11月 (2)
2006年10月 (2)
2006年9月 (3)
2006年8月 (6)
2006年7月 (1)
2006年6月 (2)
2006年5月 (10)
2006年4月 (50)
2006年3月 (1)
网址
http://blog.csdn.net/Unagain
v_JULY_v
搜索
积分与排名
积分 - 209818
排名 - 265
最新评论
1. re: 使用Policy文件来设置Java的安全策略[未登录]
ss
--啊啊
2. re: Jni中C++和Java的参数传递
老大,Long 是J啊,不是L啊,可害苦我了,赶紧改回来吧;
--cnhua5
3. re: Jni中C++和Java的参数传递
楼主,在jni里返回String和C++里获取的为什么不一样,比如在java里看到的值是57891234,在C++里显示的是5789@,这是为什么啊?
--chr
4. re: 螺旋数字与坐标
对我的项目很有帮助。
谢谢
--cs221313
5. re: Jni中C++和Java的参数传递
long的符号表写错了,作为初学者亚历山大啊
--hhhhhh
阅读排行榜
1. Jni中C++和Java的参数传递 (63450)
2. 本地计算机上的 MSSQLSERVER 服务启动后又停止了。一些服务自动停止,如果它们没有什么可做的,例如“性能日志和警报”服务。[用批处理解决](22454)
3. 使用Policy文件来设置Java的安全策略(10473)
4. 一个简单的十六进制计算器(出自Win程序设计)(8736)
5. VC++6.0 全部默认快捷键(6197)
评论排行榜
1. Upload Server (HTTP 上传服务JAVA程序) 速度极快(11)
2. Jni中C++和Java的参数传递 (10)
3. 垃圾软件反删除批处理文件 (7)
4. 刚写的八皇后问题 - 递归 (随便你定义几个皇后了)JAVA(4)
5. 火车运煤问题(4)
[ThinkingDog]是一个积极向上、乐观、热心的人。