class A {
public static void setEdit(Integer value){
}
}class B {
//执行数据库操作
public static void query() {
}
}
class C {
for(int i = 0 ; i < 100 ; i ++) {
A.setEdit();
}
B.query();
}
要求在C里面一边执行A.setEdit(),一边执行B.query。B.query是执行数据库查询,只需要执行一遍,A.setEdit()需要多次。当B.query执行完,A.setEdit()也执行完毕。
public static void setEdit(Integer value){
}
}class B {
//执行数据库操作
public static void query() {
}
}
class C {
for(int i = 0 ; i < 100 ; i ++) {
A.setEdit();
}
B.query();
}
要求在C里面一边执行A.setEdit(),一边执行B.query。B.query是执行数据库查询,只需要执行一遍,A.setEdit()需要多次。当B.query执行完,A.setEdit()也执行完毕。
等A.setEdit()执行完啦,再执行B.query不行呢
第一个循环里,开启所有线程。
第二个循环里让所有的线程join()。等待所有的edit操作结束
然后执行query
public static void main(String[] args) {
MyProgress prog = new MyProgress();
new Thread(prog).start();
DB.query();
prog.stop();
}
}class MyProgress implements Runnable {
private boolean bStop = false;
private int count = 0;
public void run() {
while(!bStop) {
UI.setEdit(new Integer(count++));
try {
Thread.sleep(500);
} catch (InterruptedException e) { }
}
}
public synchronized void stop() {
bStop = true;
}
}class UI {
public static void setEdit(Integer value) {
System.out.println(value);
}
}class DB {
public static void query() {
System.out.println("before query.");
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("after query.");
}
}