java多线程导入excel(java多线程导入数据库)

Exce表格网 2023-01-29 03:00 编辑:admin 259阅读

1. java多线程导入数据库

1、首先第一步就是在网上下载一个mysql的数据库驱动jar包,类似mysql-connector-java-5.1.20-bin.jar。新建一个JAVA项目,在项目下面创建一个lib文件夹,将驱动jar文件拷贝到lib文件夹中。

2、光是拷贝到这里还不够,需要将该JAR包加入到项目的build path变量中。鼠标右边-》build path->configure build path .. 在弹出的界面中点击Add jars 选中驱动jar包将之添加到build path变量中。

3、然后创建一个JAVA文件写连接数据库的代码。需要声明四个变量(静态的,一般不会修改)。url 是数据库的网络地址及其数据库的名称。name 驱动的名称(不同数据库是不同的,别人定义的固定写法),user 数据库用户名 password 数据库连接密码。

4、接下来就是通过数据库连接创建Connection对象,TestDBHelper类的构造方法传入sql语句,那样在使用的时候就可以直接New 对象然后传入SQL语句执行了。记得写一个关闭连接的方法,每次访问数据库之后必须关闭连接。

5、接下来就是写main方法测试数据库连接,SQL语句执行的结果集是放在ResultSet对象中的,如果要取里面的内容就需要循环依次取出。使用完之后记得关闭数据库连接。

6、最后就是查看控制台的输出信息,比较和数据库表中的信息是否一致。另外我这里的表只有两个字段,如果有多个字段按照ret.getString(2); ret.getString(3);依次往后面取就可以了。

拓展资料:

Java是由Sun公司于1995年5月推出的面向对象的程序设计语言。

Java继承了C++语言面向对象技术的核心,又舍弃了C++语言中的指针、运算符重载以及多重继承的特性,同时引入了泛型编程、类型安全的枚举等特性,使Java成为简单、面向对象、分布式、解释性、健壮、安全与系统无关、可移植、高性能、多线程和动态的语言。

随着互联网的迅猛发展,Java已经成为重要的网络编程语言,被广泛应用于企业级Web应用开发和移动应用开发。

Java看起来设计得很像C++,但是为了使语言小和容易熟悉,设计者们把C++语言中许多可用的特征去掉了,这些特征是一般程序员很少使用的。例如,Java不支持go to语句,代之以提供break和continue语句以及异常处理。Java还剔除了C++的操作符过载(overload)和多继承特征,并且不使用主文件,免去了预处理程序。因为Java没有结构,数组和串都是对象,所以不需要指针。Java能够自动处理对象的引用和间接引用,实现自动的无用单元收集,使用户不必为存储管理问题烦恼,能更多的时间和精力花在研发上。

2. 多线程从数据库取数据

Connection对象本来就是要用完即关闭的,大多数数据库都实现了各自的连接池,始终会从活动连接中挑选可用连接给调用方,认为影响效率,只是你自己的想法。

3. 多线程 批量 插数据 到数据库

看什么情况下使用,方法很多。

如果调用频度不高,我做量化分析程序一般是用c++启用python进程,用的pypy速度快点,pypy生成结果到redis或mysql的内存表中,调用结束后c++去redis或mysql的内存表中取出来,你也可以使用文件写入来完成,但文件写入容易出现不同步问题,不想用网络版的,可以用sqlite写入结果,再在另外一个程序用sqlite读取。如果类似互联网业务,可以使用消息队列,消息服务器通信。如果你的程序需要线程安全,需要临界区保护,最好用消息队列这种支持多线程多进程同时访问,消息队列比数据库存储要快,但没有数据库方便。

有个c++版的本机版vedis,高仿redis的嵌入版,你可以用这个初期开发,如果需要切换到redis,很容易修改vedis成redis,ssdb可以把redis落地存储,ssdb是高仿redis的存储版。

如果没有数据存储,可以使用socket通信,或用多进程通信,如chrome是多进程的,通信用的命名管道(Named Pipe),多语言之间调用理论上可以用这个。命名管道要比消息队列快,但需要自己定制。调用方法的协议,可以使用json来完成,这样n多语言都可以通用,如果追求性能可能使用二进制通信协议。

python调用c语言方法也很成熟,但需要自己写一些代码包装一下,需要防止内存泄漏,多线程同步,阻塞,异常等问题。

4. 多线程数据库连接

多线程操作,请确保每个线程操作的SQL语句中的表是相对独立的。 不然,你需要安排线程间的顺序,也就是lock代码段。

同一时间,两个线程一起跑同一句SQL,而且还操作同一张表,那么,肯定就会有问题了。一般这种是因为超出数据库最大链接上限。再建立链接,不管缓存多少,会自动队列消息等待。Timeout时间内没有链接取消无法获得链接权限。可以将自己的数据库链接个数设置大一些。

5. java多线程导入excel数据

线程是指处理器每个时间内最小的执行单位,例如excel中一个add()函数就是一个线程。一般而言,一个进程包含一个或一个以上线程。当软件程序(也是进程)数量多于处理器数量,而所有程序“看起来”能够同时运行,是因为处理器可以在ns/ms时间内计算完A进程的一个线程,然后在下一个ns/ms时间内去处理B进程的一个线程,这样人眼可观察的1s内其实就有很多个进程的很多歌线程被处理完了。但对一个处理器来讲,在给定的某个时间点上它只能处理一个线程。

6. java多线程读取数据库

您好,数据库肯定都支持多线程的。在数据库范畴,你需要关注的是;这个数据库各个线程间写和读的关系。oracle 是随时都可以读到当前的数据,不会因为别的线程在写而阻塞。但是,等到写的动作完成,再去读,才是新数据。多线程一般是指连接数据库的程序,是否支持多线程。比如JAVA,采用JDBC方式连接ORACLE。想让它能够多线程,那么你就用java的多线程方法来实现。当然,为了提高效率,你还可以使用数据库连接池,就使你的多线程更加优秀了。

7. java多线程批量导入数据库

Excel文件中的记录比较多的话,要考虑使用多线程。可以考虑使用多线程设计模式中的Producer-Consumer模式。首先,专门开辟一个线程(一个够用,多了无益,以下称之为Reader线程),该线程负责读取Excel文件中的记录。比如使用第三方工具POI,此时读取到的Excel记录是一个Java对象。该线程每次读取到记录都将其存入队列(如ArrayBlockingQueue)。它仅负责读取记录并将其存入队列,其它的事情它不做。其次,再设置若干个线程(如果一个够用,就一个。

数量最好不要超过系统的CPU个数

,以下称为Processor线程),这些线程负责从上述队列中取出记录(对象),然后对记录中的数据进行校验,写入数据库(这里我假设导入的目标是数据库,你的问题中并没有说明导入目标是什么)。最后,Reader线程读取完所以记录之后,要“通知”Processor线程:等你处理完所有记录后,你可以停止了。这点,可以借助多线程设计模式中的Two-phase Termination模式来实现。其主要思想是为要停止的线程(目标线程,这里就是Processor线程)设置一个停止标志,并设置一个表示目标线程的工作任务数(这里值有多少条记录需要它处理)的变量。当目标线程侦测到其待处理的任务数为0,且线程停止标志已置为true的情况下,该线程就可以停止了。Two-phase Termination模式参考这里:

Java多线程编程模式实战指南(三):Two-phase Termination模式

。更详细的,可以参考我的新书。最后,相应注意“产品”的粒度。即Reader线程往队列(传输通道)中存入的“产品”是个什么对象,是一条Excel记录,还是多条Excel记录?一般为了减少“产品”在队列中的移动次数(以减少相应开销)要适当将“产品”的粒度设置粗一些。例如,创建一个“容器型”对象用来存储多条记录。

顶一下
(0)
0%
踩一下
(0)
0%
相关评论
我要评论
点击我更换图片