'da işlemek için her bir iş parçacığına belirli sayıda rdms kaydı atama Burada iki iş parçacığı oluşturdum. Bir toplu iş dosyasındaki mysql'den kayıtları okumaya ve bu iş parçacığını her bir iş parçacığına atamaya çalışıyorum bu kayıtlar konsola.java
Her birinde 10 kayıt içeren iki grup olduğunu varsayalım. Bu kayıtları konsolda yazmak için her bir iş parçacığına her bir iş parçacığı atamaya çalışıyorum.
Burada sadece thread1 tüm 1000 kaydı okuyor (yığın başına 10 kayıt) .But thread2 oluşturmaya çalışacağım.İleri şekilde işleme koyabilmek için thread2 oluşturabilirim.
Kodum:
public class DataRead {
static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
static final String DB_URL = "jdbc:mysql://localhost/test";
static final String USER ="root";
static final String PASS ="abc";
public static void main(String[] args) throws ClassNotFoundException, SQLException {
Connection conn = null;
Statement stmt = null;
Class.forName(JDBC_DRIVER);
System.out.println("Connecting to a selected database");
conn = DriverManager.getConnection(DB_URL, USER,PASS);
System.out.println("Connected to Database Successfully !!!");
ResultSet rs = null;
stmt = conn.createStatement();
int maxRecords = 10;
int initialcount =0;
int count =0;
rs = stmt.executeQuery("SELECT COUNT(*) FROM customer");
rs.next();
count = rs.getInt(1);
System.out.println(count);
for(int i=0;i<count/10;i++){
String sql =" SELECT customerId,firstName,lastName FROM customer ORDER BY customerId LIMIT "+initialcount+","+maxRecords;
rs = stmt.executeQuery(sql);
String CustID= null;
String firstName = null;
String lastName = null;
ExecutorService threadExecutor = Executors.newFixedThreadPool(2);
List<CustomerData> list = new ArrayList<CustomerData>();
while(rs.next()){
CustomerData customer = new CustomerData();
customer.setCustID(rs.getString("customerId"));
customer.setFirstName(rs.getString("firstName"));
customer.setLastName(rs.getString("lastName"));
list.add(customer);
}
MyRunnable task1 = new MyRunnable(list);
threadExecutor.execute(task1);
threadExecutor.shutdown();
while(!threadExecutor.isTerminated()){
try {
threadExecutor.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS);
} catch (InterruptedException e) {
}
}
initialcount = initialcount + maxRecords;
}
System.out.println("Finished all threads !!!");
}
}
MyRunnable:
public class MyRunnable implements Runnable{
private final List list;
public MyRunnable(List list){
this.list = list;
}
@Override
public void run() {
for(int i=0;i<list.size();i++){
CustomerData cust = (CustomerData) list.get(i);
System.out.println(Thread.currentThread().getName()+" "+"Hello: "+cust.getCustID()+" "+cust.getFirstName()+" "+cust.getLastName());
}
}
}
CustomerData:
public class CustomerData {
private String custID;
private String firstName;
private String lastName;
public String getCustID() {
return custID;
}
public void setCustID(String custID) {
this.custID = custID;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
}
u burada – dev777
dev777 @ üzerinde kodunu düzenlemek misiniz, İşte basit sözde olduğunu. Bir deneyin – Backtrack
Teşekkür ederim. Onunla deneyeceğim – dev777