我想问下,在生成报表的时候,要考虑线程并发的问题,不能单纯的去生成EXCEL然后读,那我应该怎么解决呀 我想问下,在生成报表的时候,要考虑线程并发的问题,不能单纯的去生成EXCEL然后读,那我应该怎么解决呀 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 具体的类你没给出,我说下我的想法吧单独使用一个线程来打印报表,在进行打印的方法里添加一个synchronized同步块,同步块里面是你生产报表的处理在进入同步块前先判断一下是否有在进行报表生成(可用if语句判断),若有则调用wait(),否则正常进入同步块,打印结束后调用notify()通知等待的线程可以进入同步快。大概的流程就是这样。希望我将清楚了—_— 多线程同时打印?既然是多线程的那只要synchronized同步打印的方法了,我写了个类似的测试代码,你可以参考下PrintTester类public class PrintTester extends Thread { Print print; public PrintTester(String name,Print print){ super(name); this.print=print; start(); } public void run() { while(true){ print.printThings(this.getName()); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } } public static void main(String[] args) { Print print =new Print(); //生成5个线程打印 for(int i=0;i<5;i++){ new PrintTester("thread "+i,print); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } }}Print 类public class Print { private int i=0; synchronized public void printThings(String threadName){ System.out.println(threadName+"is printing i="+i); //打印 i++; }}不知道是你想要的吗 做过red5 在线直播请进 SOA求助 我的一个打字练习程序 求一道不是很难的java题的解法 数据库SQL的一个错误,大家进来看看啊! 我搞不明白了 java能不能像vc一样能够在函数中修改参数值? 怎么把中文插入数据库?菜鸟小问,在线 如何在程序中实现压缩/解压缩??? 寻Java高手!(给公司做开发培训) 请教各位哪里有visualage下载啊! [求助]InputStream的available()方法是不是有BUG? 怎么用poi操作excel啊?
单独使用一个线程来打印报表,在进行打印的方法里添加一个synchronized同步块,同步块里面是你生产报表的处理
在进入同步块前先判断一下是否有在进行报表生成(可用if语句判断),若有则调用wait(),否则正常进入同步块,打印结束后调用notify()通知等待的线程可以进入同步快。大概的流程就是这样。
希望我将清楚了—_—
既然是多线程的那只要synchronized同步打印的方法了,我写了个类似的测试代码,你可以参考下PrintTester类public class PrintTester extends Thread {
Print print;
public PrintTester(String name,Print print){
super(name);
this.print=print;
start();
}
public void run() {
while(true){
print.printThings(this.getName());
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
Print print =new Print();
//生成5个线程打印
for(int i=0;i<5;i++){
new PrintTester("thread "+i,print);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}Print 类
public class Print {
private int i=0;
synchronized public void printThings(String threadName){
System.out.println(threadName+"is printing i="+i); //打印
i++;
}
}
不知道是你想要的吗