导航:首页 > 编程大全 > java多线程数据库

java多线程数据库

发布时间:2024-09-07 15:59:27

java多线程并发操作数据库能否提高运行速度。

优化建议:
1. 在你的抄代码里大点评袭测下 每个操作花的时间. 譬如 dom4j解析花了多久, 存储到数据库花了多久等等.
2. 评测哪些地方可以并行操作以提高CPU利用率;
3. 数据库操作部分也可以做适当优化, 譬如批量提交可以显著提高插入速度, 譬如去除索引/主键后插入等;
4. 不同机器的IO速度是不同的, 因此应该能提供运行时的任务调度参数化, 譬如多少个dom4j解析线程, 入库的批量数量等;

㈡ java多线程访问数据库怎么优化啊,并发很大

只是记录访问量而已对吧?
如果只是记录这种日志性的数据,可以建立一个消息池,把刷新的记录写到消息池里面,然后写个类实时从消息池里面取数据插入到数据库就好了,这样就只需要一个连接就够了。

㈢ java爬虫采用多线程,数据库连接多了就报异常

和线程池应该没关系,楼主这里应该是就是开启多个线程同时 长时间爬取,估计应该是有些线程存在并发问题,造成了线程死锁。可以用监控工具跟踪下。

㈣ java多线程框架有哪些

Java多线程框架主要有以下几种:


1. Java原生线程框架


Java语言本身提供了多线程的原生支持,通过java.lang.Thread类以及java.util.concurrent包中的一系列类来实现多线程编程。其中,Thread类是Java中最基本的线程类,可以通过继承Thread类或使用实现Runnable接口的方式创建线程。此外,java.util.concurrent包提供了一系列支持并发编程的工具类,如ExecutorService、CountDownLatch等。


2. Spring框架中的多线程支持


Spring框架提供了对多线程编程的良好支持,主要体现在Spring的任务调度框架中。通过Spring的TaskExecutor接口,可以方便地进行任务调度和线程池管理。此外,Spring还提供了注解驱动的异步方法执行,通过@Async注解可以轻松地实现异步处理。


3. Java并发包java.util.concurrent


java.util.concurrent包是Java标准库中一个重要的并发工具包,提供了多种并发编程的工具类。其中,线程池相关的类如ThreadPoolExecutor、ScheledThreadPoolExecutor等被广泛应用于多线程编程中。此外,该包还提供了并发集合类,可以有效地处理并发访问问题。


4. Java多线程框架Apache MINA和Netty


Apache MINA和Netty是Java中常用的网络编程框架,它们也提供了对多线程编程的支持。这两个框架都基于异步事件驱动模型,可以有效地处理高并发网络连接和数据传输。其中,Netty是一个高性能的异步事件驱动的网络应用框架,广泛应用于开发网络服务和分布式系统


以上这些Java多线程框架各有特点,适用于不同的应用场景。开发者可以根据具体需求选择合适的框架来实现多线程编程。

㈤ java多线程导入数据,怎么实现事务控制

java多线程导入数据,实现事务控制
单一数据库的话,最好是多线程算出来的要入库的数据,返回到主线程里汇总,做最后的排重验证等,然后在主线程里入库

㈥ java 多线程 写入数据库 数据池

你这个首先得分开。
第一部分:你有很多线程在往数据池里面写入数据。那内么,你的线程只管写容数据,不用理会其他的数据。
第二部分:你的另外的线程(这里可以用spring的job定时器启动),这部分只管往数据库写入数据,至于写入的条件,你可以判断数据池的数据是否达到写入的标准。这里的线程可以配置为启动一次就一直运行,或者是隔多少秒继续运行。这样可以提高效率。
第三部分:数据池,这里的数据池一定要第一部分和第二部分的线程都能够访问,并且是唯一的。你可以写一个公用的类来进行控制。
大致就是这样的。

㈦ java怎么多线程操作一个数据库

//将数据库中的数据条数分段
public void division(){
//获取要导入的总的数据条数
String sql3="SELECT count(*) FROM [CMD].[dbo].[my1]";
try {
pss=cons.prepareStatement(sql3);
rss=pss.executeQuery();

while(rss.next()){
System.out.println("总记录条数:"+rss.getInt(1));
sum=rss.getInt(1);
}
//每30000条记录作为一个分割点
if(sum>=30000){
n=sum/30000;
resie=sum%30000;
}else{
resie=sum;
}

System.out.println(n+" "+resie);

} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
线程类
public MyThread(int start,int end) {
this.end=end;
this.start=start;
System.out.println("处理掉余数");
try {

System.out.println("--------"+Thread.currentThread().getName()+"------------");
Class.forName(SQLSERVERDRIVER);
System.out.println("加载sqlserver驱动...");
cons = DriverManager.getConnection(CONTENTS,UNS,UPS);
stas = cons.createStatement();
System.out.println("连接SQLServer数据库成功!!");

System.out.println("加载mysql驱动.....");
Class.forName(MYSQLDRIVER);
con = DriverManager.getConnection(CONTENT,UN,UP);
sta = con.createStatement();
// 关闭事务自动提交
con.setAutoCommit(false);
System.out.println("连接mysql数据库成功!!");

} catch (Exception e) {
e.printStackTrace();
}
// TODO Auto-generated constructor stub
}

public ArrayList<Member> getAll(){
Member member;
String sql1="select * from (select row_number() over (order by pmcode) as rowNum,*" +
" from [CMD].[dbo].[my1]) as t where rowNum between "+start+" and "+end;
try {
System.out.println("正在获取数据...");
allmembers=new ArrayList();
rss=stas.executeQuery(sql1);
while(rss.next()){
member=new Member();
member.setAddress1(rss.getString("address1"));
member.setBnpoints(rss.getString("bnpoints"));
member.setDbno(rss.getString("dbno"));
member.setExpiry(rss.getString("expiry"));
member.setHispoints(rss.getString("hispoints"));
member.setKypoints(rss.getString("kypoints"));
member.setLevels(rss.getString("levels"));
member.setNames(rss.getString("names"));
member.setPmcode(rss.getString("pmcode"));
member.setRemark(rss.getString("remark"));
member.setSex(rss.getString("sex"));
member.setTelephone(rss.getString("telephone"));
member.setWxno(rss.getString("wxno"));
member.setPmdate(rss.getString("pmdate"));
allmembers.add(member);
// System.out.println(member.getNames());
}
System.out.println("成功获取sqlserver数据库数据!");
return allmembers;

} catch (SQLException e) {
// TODO Auto-generated catch block
System.out.println("获取sqlserver数据库数据发送异常!");
e.printStackTrace();
}
try {
rss.close();
stas.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}

public void inputAll(ArrayList<Member> allmembers){
System.out.println("开始向mysql中写入");
String sql2="insert into test.my2 values (?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
try {
ps=con.prepareStatement(sql2);
System.out.println("-------------------------等待写入数据条数: "+allmembers.size());
for(int i=0;i<allmembers.size();i++){
ps.setString(1, allmembers.get(i).getPmcode());
ps.setString(2, allmembers.get(i).getNames());
//System.out.println(allmembers.get(i).getNames());
ps.setString(3, allmembers.get(i).getSex());
ps.setString(4, allmembers.get(i).getTelephone());
ps.setString(5, allmembers.get(i).getAddress1());
ps.setString(6, allmembers.get(i).getPmdate());
ps.setString(7, allmembers.get(i).getExpiry());
ps.setString(8, allmembers.get(i).getLevels());
ps.setString(9, allmembers.get(i).getDbno());
ps.setString(10, allmembers.get(i).getHispoints());
ps.setString(11, allmembers.get(i).getBnpoints());
ps.setString(12, allmembers.get(i).getKypoints());
ps.setString(13, allmembers.get(i).getWxno());
ps.setString(14, allmembers.get(i).getRemark());
//插入命令列表
//ps.addBatch();
ps.executeUpdate();
}
//ps.executeBatch();
con.commit();

ps.close();
con.close();
this.flag=false;
System.out.println(Thread.currentThread().getName()+"--->OK");
} catch (SQLException e) {
// TODO Auto-generated catch block
System.out.println("向mysql中更新数据时发生异常!");
e.printStackTrace();
}
}
@Override
public void run() {
// TODO Auto-generated method stub
while(true&&flag){
this.inputAll(getAll());
}
}

阅读全文

与java多线程数据库相关的资料

热点内容
陌陌科技旗下有哪些app 浏览:521
linux内网映射到外网 浏览:430
魅族相机程序 浏览:630
iphone6刚买来就有点弯 浏览:618
升级ios9滑动来升级 浏览:341
应用宝上传安卓和苹果手机助手 浏览:590
win10创建恢复盘 浏览:453
女神投票网站 浏览:211
灰灰影视网站多少 浏览:730
给文件夹漏沟 浏览:164
联系服务器默认密码 浏览:980
chm文件怎么转换成pdf 浏览:988
javasetup6u22exe 浏览:692
win10rdpusb重定向 浏览:183
邮箱怎么传送文件夹吗 浏览:518
苹果app怎么恢复购买 浏览:929
联想光盘驱动程序下载 浏览:151
文件管理器一次分享多个图片 浏览:819
管家婆销售单样式默认哪个文件夹 浏览:2
为什么待机时数据网络断开 浏览:161

友情链接