多线程 producer consumer问题 场景介绍。系统中有一个导入功能,导入后要对数据进行一系列处理。处理逻辑较复杂,所以用一个线程延时来处理。现在的情形就是导入后就创建一组任务,任务加入待处理列表中。处理的线程进行处理,没有任务时就等待,直到有任务进来再唤醒。现在wait notify都是手工做的,代码乱的没法看了。有经验的筒子们给点建议,有啥现成的Lib啊,模式啊,尽量拍啊 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 java.util.concurrent.Executorjava.util.concurrent.Executorsjava.util.concurrent.ExecutorService 把任务添加到 LinkedBlockingQueue 中去,另启一个线程从这个队列中 take 出任务就可以了,没有任务时 take 自己会阻塞掉,如果队列满了,在 put 时就会阻塞掉。看任务的处理速度,以及数量有多少来设定这个 Queue 的长度。 LinkedBlockingQueue 属于 Java 集合框架类库之一,并且在 java.util.concurrent 下,其是线程安全的,可以被多个线程并发地进行处理。 LinkedBlockingQueue 不错,但是还有点不满足需要1,我不希望put进去task之后立刻开始处理,我希望它等我通知的时候在开始 导入的数据存在表A中,线程的任务是根据业务逻辑,设置表A中某些字段的值导入的方法是有事务控制的。事务控制是由spring的taransaction manager管理的。是加在方法上的。向任务队列中添加任务是在导入方法中做得。导入方法与线程中的操作同时执行的话会报一个数据库异常。所以要在开始导入前,让线程暂停,在结束之后再恢复它 不运行,说说下面代码的输出 关于数组声明的问题 显示Exception in thread "main" java.lang.NullP的错误,在线等 这个输入流System.in.read()读入字符为什么会产生这样的效果? 再次求援Socket的问题 请教怎么在Java中实现读取保存Flash中数据的问题 java 中使用打印机的问题 谁知道哪儿有下载 Effective Java 中文版,英文版也行啊,多谢 IP地址字符串与整数之间怎样转换? mssql jdbc不支持长整形!? jnlp发布jar包,调用资源文件的问题,等高人来帮忙!!! java处理多线程数据共享的问题
java.util.concurrent.Executors
java.util.concurrent.ExecutorService
1,我不希望put进去task之后立刻开始处理,我希望它等我通知的时候在开始
导入的方法是有事务控制的。事务控制是由spring的taransaction manager管理的。是加在方法上的。向任务队列中添加任务是在导入方法中做得。导入方法与线程中的操作同时执行的话会报一个数据库异常。所以要在开始导入前,让线程暂停,在结束之后再恢复它