请教java 多线程死机问题
请各位高手指教,问题详情如下:
我是用eclipse写的java程序,可以同时连接多个读卡器,对多张卡同时执行写卡操作。我对每个读卡器创建了一个线程,程序开始后,多个线程同时启动,轮流排队对每个读卡器进行写卡操作,写卡命令会在屏幕上显示,所以多张卡会在差不多的时间点写完。
问题是我的程序同时写5张卡基本上没什么问题,但是同时写6张以上的卡时在写到40分钟左右的时候,CPU的使用率就逐渐累加,从10%到20%,然后到40%-50%,之后就会死掉了,没有任何错误提示,都是在发了一条命令后不显示返回数据,然后程序的UI就不动了,但是电脑上的其他程序都是正常的。程序死掉时偶尔会有卡片已经写卡成功,但多数情况下是所有的卡片都没有完成写卡。
eclipse中的VM参数为-Xmx1024m,运行程序的电脑内存为2G。我把程序打包成可执行的jar文件,copy到别的机器上运行。
我自己的机器是2G内存,其他配置比较高,有时候能同时写成功6张和6张以上的卡,但是在另外一台老机器上就不行,那台机器的内存也是2G,但是其他的配置就比较低了。
读卡器都是连在一个带电源的USB hub上,所以排除了USB口供电不足的问题。
还有写卡的数据量挺大的,每张卡要写4块程序区,1块数据区,每块区域都是从0000到FFFF,每条命令写0x80个字节,所以每张卡要发2500多次命令。
我的程序中没有对线程做终止处理,也没有调用isAlive()之类的函数判断线程是否还处于活动状态.
关键的函数如下:
main()如下:
public static void main(String[] args) {
try{
相关问答:
工作需要 求大家帮忙写个程序
我是学C++的 不懂JAVA
编写一个Java应用程序,对于给定的一个字符串的集合,格式如:
{aaa bbb ccc}, {bbb ddd},{eee fff},{ggg},{ddd hhh}
要求将其中交集不为空的 ......
如题,C/C++中的execl怎么调用写好的java程序,
execl("/opt/java1.5/bin/java","MyClass",NULL);
这样的不行哦。
不会.
运行java程序
找工具查看一下那个程序的命令行
搜索下:jni ......
本人正在用Java做一个C/S架构的项目,
可是由于项目比较大,前期对架构的设计尤其重要,因为后期可能随时会加个功能或者去掉某些功能。
所以特地寻求如何设计C/S的架构使程序更加面向对象更加易于维 ......
CREATE DATABASE ADDRESSLIST;
USE ADDRESSLIST;
DROP TABLE IF EXISTS FRIEND;
CREATE TABLE FRIEND
(FRIEND_ID INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY ,
FRIEND_NAME VARCHAR(20) NOT N ......
rt,我试了网上直连Acces数据库的方法,windows下没有问题,但是在linux下不行,谁能给点提示?谢谢
你怎么连的?
Acces数据库..
你怎么练的呢?
Java code:
static String DBDRIVER = "sun.jd ......