- 浏览: 1325782 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (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 文字上下滚动 无间断循环显示
1.Exception in thread "main" java.lang.IllegalMonitorStateException: current thread not owner??
public synchronized void setRunning(boolean flag)
public class FileWriterThread extends Thread{
private FileThread fileThread;
private int i;
public FileWriterThread(FileThread fileThread){
this.fileThread=fileThread;
}
public void run() {
while(true){
i++;
synchronized (fileThread){
try {
//Thread.sleep(100);
if(!fileThread.isRead()){
fileThread.wait();
}
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("write: ................");
fileThread.notifyAll();
fileThread.setRead(false);
if(i>10){
break;
}}}}
import java.io.IOException;
public class FileReaderThread extends Thread{
private FileThread fileThread;
private int i;
public FileReaderThread(FileThread fileThread){
this.fileThread=fileThread;
}
public void run() {
while(true){
i++;
synchronized (fileThread){
try {
//Thread.sleep(100);
if(fileThread.isRead()){
fileThread.wait();
}
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("read: .................");
fileThread.setRead(true);
if(i>10){
break;
}
fileThread.notifyAll();}}}
public class FileThread {
private FileInputStream fis;
private FileOutputStream fos;
private byte[] buf;
volatile int len;
private boolean isRead;
public FileThread(byte[] buf){
try {
fis=new FileInputStream("c:\\a.txt");
fos=new FileOutputStream("c:\\aa.txt");
} catch (FileNotFoundException e) {
e.printStackTrace();
}
this.buf=buf;
}
public boolean isRead() {
return isRead;
}
public void setRead(boolean isRead) {
this.isRead = isRead;
}}}
public class Test {
public static void main(String[] args) {
byte[] buf=new byte[1024];
FileThread ft=new FileThread(buf);
FileReaderThread frt=new FileReaderThread(ft);
frt.start();
FileWriterThread fwt=new FileWriterThread(ft);
fwt.start();}}
两个线程同步运行:
read: .................
write: ................
read: .................
write: ................
read: .................
2.把上面的类写在spring2中:
<bean id="file" class="thread.two.FileThread" scope="singleton"></bean>
<bean id="read" class="thread.two.FileReaderThread">
<constructor-arg ref="file"></constructor-arg>
</bean>
<bean id="write" class="thread.two.FileWriterThread">
<constructor-arg ref="file"></constructor-arg>
</bean>
[B@df1832 read---- len:1024
getLen()----- 1024
write: len=1024 //线程没有执行完,没有做循环 ??后来又看出来了,它执行的好慢.
private TaskExecutor taskExecutor;
taskExecutor.execute(new MessagePrinterTask("Message" + i));//MessagePrinterTask实现Runnable
- thread-file.rar (6.5 KB)
- 下载次数: 1
发表评论
-
服务端推送multipart/x-mixed-replace
2023-12-07 15:26 417往网页分批推送数据:boundary=END,总头--> ... -
使用httpclient提交post请求
2020-08-22 08:35 484import org.apache.http.HttpEnt ... -
Groovy超强的Java动态计算能力
2020-06-25 09:03 696//Groovy超强的Java动态计算能力 groovy-2. ... -
bsh(BeanShell)动态执行java代码
2020-06-25 07:59 995import java.util.Date; /** * B ... -
延时任务处理订单超时方案
2020-05-23 16:05 1015JDK的延迟队列 方案是利用JDK自带的DelayQueue ... -
HttpsURLConnection
2020-04-29 10:51 863import java.net.URL; import jav ... -
Log4j的ConversionPattern参数的格式含义
2020-04-22 14:23 513Log4j的ConversionPattern参数的格式含义 ... -
thread 的join
2020-04-16 18:02 424java里面也有这个方法,Java Thread中, join ... -
GZIPOutputStream压缩文件
2020-04-16 17:52 795import java.io.BufferedReader; ... -
软引用SoftReference的使用
2020-04-16 15:48 587软引用SoftReference的使用 SoftRefere ... -
Fastjson
2020-04-15 14:53 408import java.util.ArrayList; imp ... -
6位随机数
2020-04-14 09:47 813import org.apache.commons.lang. ... -
Java加密和数字签名
2020-04-14 09:38 425Java加密和数字签名 消息摘要 这是一种与消息认证码结合使 ... -
DES加密、解密
2020-04-02 16:42 439import java.security.SecureRand ... -
Java利用 AES/ECB/PKCS5Padding 算法加解密
2020-04-02 11:19 1070对称加密、解密 import javax.crypto.Ci ... -
springboot中使用springmvc的拦截器-HandlerInterceptorAdapter
2018-12-13 16:04 1394springboot中使用springmvc的拦截器-Hand ... -
aspectj连接点
2018-12-13 15:55 606切点指示符 切点指示符 ... -
spring之AspectJ面向切面编程
2018-12-13 14:15 913spring之AspectJ面向切面编程 面向切面编程,实现 ... -
设计模式之策略模式
2018-05-30 21:17 563public class Person { priva ... -
使用反射将对象转Map
2018-05-27 17:33 733//使用反射将对象转Map<String, St ...
相关推荐
以下是使用TThread进行多线程读写的步骤: 1. **创建TThread子类**:首先,创建一个新的类,继承自TThread。在这个新类中,定义你需要在线程中执行的代码,即读取或写入数据的逻辑。 ```delphi type ...
然后,在`file_lock.py`的2.1部分,展示了没有使用任何同步机制(即不加锁)的多线程读写文件。这会导致并发问题,如输出所示,数据被错误地读取和写入,因为多个线程可能同时访问文件,导致数据混乱。 为了修复这...
"file_dw.rar_多线程 读写_文件 系统 dw"这个压缩包文件,从标题来看,似乎包含了一个关于如何在操作系统(可能是DW,可能是某个特定的操作系统代号或者开发环境)中使用多线程进行文件读写的示例或代码库。...
事情起因: 修改配置后,C++函数取读配置xml时,相机缓存满了而引起崩溃。几率发生。 解决思路: 读文件费时间,所以开一个线程读文件。...查看日志:“读取参数”线程约60秒完成,模拟图像处理”线程约50秒完成。
# 基于Java的多线程读写模拟系统 ## 项目简介 本项目是一个基于Java的多线程读写模拟系统,旨在通过模拟读者和写者线程的行为,展示操作系统中多线程并发处理的基本原理。项目通过读取配置文件、初始化时间戳、...
为了解决这个问题,C#提供了一种名为“读写锁”(ReaderWriterLockSlim)的同步原语,它允许对共享资源进行高效的读写控制,确保了多线程的安全性。本文将深入探讨如何利用读写锁在C#中实现多线程的高效安全资源访问...
在IT领域,多线程是并发处理任务的关键技术,尤其在读取大文件时,能够显著提高程序的执行效率。本文将围绕“多线程读取文件”这一主题,结合给定的标签“源码”和“工具”,深入探讨如何在Java等编程语言中实现这一...
为了解决这个问题,我们可以利用C#中的读写锁(ReaderWriterLockSlim)来实现线程同步。本文通过三行代码展示了如何使用读写锁解决多线程并发写入文件的冲突。 读写锁的核心在于,它允许多个线程同时读取资源,但只...
HANDLE hSerialPort = CreateFile(comName, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); ``` 上述代码尝试以读写权限打开`COM1`,并设置为独占访问(`dwShareMode=0`)...
本文将详细讲解如何利用C#实现文件的多线程复制,包括线程池的使用、线程数量限制以及FileStream类的读写功能。 首先,线程是操作系统分配CPU时间的基本单位,每个线程负责执行一个独立的任务。在C#中,我们可以...
以下是对`File`类以及文件读写、复制和图片下载的详细讲解。 1. **文件和文件夹的创建** 使用`File`类可以方便地创建新的文件或目录。例如,通过调用`createNewFile()`方法可以创建一个新文件,但需确保路径正确且...
在这个特定的场景中,我们关注的是如何使用`CreateFile`来读写串口,并结合线程和提示功能。这通常涉及到串行通信、多线程编程以及用户界面交互。 串口通信是计算机之间通过串行端口进行数据交换的一种方式。在VC6...
以下是对Python多线程读写文件加锁的详细解释。 首先,我们来看如何使用`fcntl`模块实现文件锁。`fcntl`模块提供了Unix系统中的`fcntl()`和`ioctl()`接口,其中`fcntl.flock()`函数是实现文件锁的关键。这个函数...
在线程函数`transfer_file`内部,我们可以使用标准I/O库或网络套接字库进行文件的读写操作。例如,如果是在本地文件系统中传输,可以使用`fopen()`, `fread()`, 和 `fwrite()`函数;如果是网络文件传输,可能需要...
本示例"3_threads_write_file.rar"是关于在Linux下如何使用线程进行文件写入操作的一个综合实例。这个例子将帮助你深入理解和掌握线程在实际编程中的应用。 首先,我们要了解Linux下的线程API,它主要基于POSIX标准...
《多线程、重叠IO、异步读写与命名通道服务器源码解析》 本文将深入探讨一种基于Windows API的多线程命名管道服务器的实现,涉及的关键技术包括多线程、重叠I/O(Overlapped I/O)、异步读写以及命名管道。这些技术...
在读写文件块时,确保同一时间只有一个线程访问该文件块。 4. **信号量(Semaphore)**:在文件传输过程中,可以使用信号量来控制线程数量,防止过多线程同时访问导致系统资源过度消耗。 5. **进度同步**:使用...
在分析和编写下载代码时,理解网络请求的生命周期、线程间的通信(例如使用`Handler`或`LiveData`)以及文件操作(如读写、合并)的源码至关重要。确保代码的健壮性和性能优化。 **标签“工具”**可能指的是使用...
在这个例子中,`CopyFileThread`函数是实际执行文件复制的线程函数,使用了MFC的CFile类来处理文件读写。主程序创建线程并传递文件路径,然后启动线程。文件复制完成后,线程自动结束。 总的来说,MFC线程复制文件...