gpt4 book ai didi

java - 在插入数据库期间如何同时启动和 sleep 多个线程

转载 作者:行者123 更新时间:2023-12-02 03:28:12 24 4
gpt4 key购买 nike

我想同时重复执行4个线程并同时 sleep 。但问题是,在获得很少的正确序列数据后,很少有数据显示不同的时间。我得到以下输出

      dtime                       data
21-MAY-16 09.38.31.031000 AM .2652487
21-MAY-16 09.38.31.031000 AM .21100356
21-MAY-16 09.38.31.031000 AM .39925393
21-MAY-16 09.38.31.031000 AM .32884327
21-MAY-16 09.38.33.046000 AM .08516244
21-MAY-16 09.38.33.046000 AM .701089
21-MAY-16 09.38.33.046000 AM .9537386
21-MAY-16 09.38.33.086000 AM .0397367

以下是代码片段:

public class TestConnection {

public static void main(String[] args) {
Thread t1=new Thread(new TestingThread(),"t1");
Thread t4=new Thread(new TestingThread(),"t4");

t1.start();
t4.start();

}

}

public class TestingThread implements Runnable{
@Override
public void run(){

try{

doDB();
}
catch(InterruptedException e){
System.out.println(e);
}

}

private void doDB() throws InterruptedException {

Connection conn;
PreparedStatement pstmt;
try
{
/* Create Connection objects */
conn= ....;
/* Create the insert statement */
String insertQuery = ".....";

pstmt = conn.prepareStatement(insertQuery);
for(int i=1;i<3;i++)
{
pstmt.setTimestamp(1, getCurrentTimeStamp());
pstmt.setFloat(2, (float) Math.random());

i=pstmt.executeUpdate();

}
try{
if(conn!=null){
conn.commit();
conn.close();
}
}
catch(SQLException se){
se.printStackTrace();
}

}
catch(Exception e)
{
e.printStackTrace();
}

}
}

最佳答案

从java端不可能让多个线程完全同时运行,因为这是操作系统的调度责任。如果线程数量大于CPU数量,则必须有某种分时机制。即使线程数等于或小于CPU数,以我有限的知识,仍然很难让线程同时运行在不同的CPU上。

在java View 中,可以让一组线程行为在同一个状态,取CyclicBarrier举个例子。

引用How to start two threads at “exactly” the same time更多细节。

希望能有所帮助。谢谢

关于java - 在插入数据库期间如何同时启动和 sleep 多个线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38494852/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com