求教线程同步问题? - Java / Java SE
要给客户的一个jar包提供这样的功能:
可以调用一个静态方法
这个时候我就会弹出一些对话框(这个对话框是一个线程,这个线程可能会生成另外的线程)这个是系统实现的我不能控制他。
等待对话框的所有事情做完
然后返回等待对话框返回了
再返回值
示例代码如下:
boolean static do(oneObj a){ Obj a = new Obj(a)//此类的构造方法会产生一个对话框,这个对话框是宁外一个线程 return a.某属性}Object get() throws Throwable{Object obj = new Object();//将你创建UI的步骤放到一个线程里面去,这里的obj不能为基本数据类型CreateUIThread t = new CreateUITHread(obj)t.start();t.join();print(obj);return obj;}class CreateUIThread() extends Thread{UICompoenent ui = null;Object obj = null;public CreateUIThread(Object obj){//这个是你需要返回的obj;this.obj = obj;}public void run(){//创建UI,并且等待用户的响应,UI里面都有自己处理事件响应的机制,//比如输入后确定,这里将OBJ作为参数传递进去,并且对其进行处理,也可以在UI里面创建新的obj//按LZ说法这里的创建过程是另外一个线程.ui = <Create UI>(obj);//强制等待用户输入,UI窗口都会有个句柄,表示这个窗口存在或有效的//比如点击确定或取消这个窗口都会消失while(ui.exist){//避免撑爆CPU<catch exception>Thread.sleep(500);}}}
[解决办法]
Mian方法 调用 你的静态方法 mainFunction
Java code
public class Main{
public static String mainFunction()
{
Object c = new Object();
UI ui = new UI(c);//加载UI的线程
ui.start();
synchronized(c){
try {
c.wait();//等待
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("静态方法完成");
return "OK";
}
public static void main(String[] args) {
Main.mainFunction();
}
}
//UI加载的线程
Java code
public class UI extends Thread {
private Object obj;
public UI(Object obj){
this.obj = obj;
}
public void run()
{
System.out.println("加载UI..");
try {
sleep(1000);//模拟加载UI花的时间
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(" UI.加载完成.");
synchronized (obj){
obj.notify();
}
}
}
PS----我也不熟练,可能有其他问题。但就这个效果而言 还是能满足需求的。十一文 多给点分分吧。。技术区 还木1000分。不好给你转分 o(╯□╰)o