程序中有一按钮,点击执行一存储过程,但此存储过程执行时间较长(10分钟左右),如何利用线程,使得在执行过程中可进行另外的操作?谢谢
程序中有一按钮,点击执行一存储过程,但此存储过程执行时间较长(10分钟左右),如何利用线程,使得在执行过程中可进行另外的操作,而不至于程序界面没有反应,请高手提示一下,或给个代码就最好了,谢谢!!!! 问题点数:50、回复次数:12Top
1 楼mercury1231(为论文而拼搏,老板就是上帝)回复于 2003-06-02 01:15:40 得分 10
再答一次。
用一个内部成员类继承Thread或者implements Runnable接口,然后在按下这个按钮时,用这个内部成员类(线程)来处理操作。
这样的话就不会发生程序没有反应的情况。Top
2 楼RomandAccessFile(goodghost)回复于 2003-06-02 04:08:19 得分 25
public ButtonPress()
{
JButton jb=new JButton();
jb.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
Thread t=new Thread(new Runnable()
{
public void run();
{
Query()\\方法
}
});
t.start();
}
});
}
给你一个大概,是构造函数,只要看一下,就会了,,
在方法的那个地方加进你的方法,替成你的那个方法就行了,
太累了,我要睡了,记得给分!!! :)
Top
3 楼Leony(老树)回复于 2003-06-02 10:34:01 得分 0
谢谢两位!问题已经解决,只是有点不明的地方想问一下:
To RomandAccessFile(goodghost) :
new Runnable()
{
public void run();
{
Query()\\方法
}
}
这段代码是什么意思啊,我知道Theard类有一构造涵数:Thread(Runnable target)
以上代码是建立一接口吗?能这样做吗?接口不是不能被new或者继承吗?
To mercury1231(非典时期的爱情):
你是意思是指把要执行的存储过程程序写在你所说的那个内部类run()里面对吗?
然后在按下按钮的时候new 一个内部类a,然后a.start()吗?
Top
4 楼Leony(老树)回复于 2003-06-02 11:11:55 得分 0
如果想在线程执行存储过程的过程中,弹出一个进度条,要应该如何做呢?
Top
5 楼Leony(老树)回复于 2003-06-02 13:06:09 得分 0
upTop
6 楼hoxisoft(一切全为你)回复于 2003-06-02 13:34:22 得分 0
记得有个专门的方法,就是进度条,你查查看Top
7 楼zouwork(了解)回复于 2003-06-02 19:09:55 得分 0
这段代码是什么意思啊,我知道Theard类有一构造涵数:Thread(Runnable target)
以上代码是建立一接口吗?能这样做吗?接口不是不能被new或者继承吗?
当然是要你自己写那个Runnable的~~
Top
8 楼teaky2002(种田硬手)回复于 2003-06-02 19:56:07 得分 0
匿名类。内部类的一种。查资料就知道了。Top
9 楼mymoto(忽忽)回复于 2003-06-02 20:13:55 得分 0
看看java自己带的demo/jfc/Notepad/Notepad.jar,里面和你要求的一样,记住以后多看demo,高手的代码都是经典啊Top
10 楼RomandAccessFile(goodghost)回复于 2003-06-02 22:12:58 得分 0
我顶,,今天我来看一下,还没给分呀,,
本来接口就是缺少方法的类,,(这样理解应该对吧! 不要向我扔西红柿,,!!!!)
所以只要把这样的方法进行定议,就可以当作一个类来使用,,Top
11 楼shine333(enihs)回复于 2003-06-03 00:10:13 得分 15
关于
Thread t=new Thread(new Runnable(){....});
的问题
new XXX(){
.....
};
这是一个匿名内部类,XXX可以是class或interface,表明这个内部类extends/implements XXX,而且 XXX后面不能跟任何implements语句。而且,这个内部类绝对不能是abstract的,换句话说,XXX中所有未定义的方法都应定义完整。
此外,这个内部类可以使用到其外面的变量,包括成员变量和局部变量(后者一定要final)
例如
abstract class A(){
abstract void a();
}
class B{
int x;
void doSth(final int y, int z){
A innerA = new A(){
public void a(){
x=y; //right;
x=z; //wrong;
}
}
}
void doNothing(){
A aa = new A(){
public void a(){}
}
}
}
同时这些内部类都有自己的名字,比如上面的对应于B$1,B$2, 文件B$1.class, B$2.class
数字按在源文件中出现的顺序
如果它没有用到局部变量的话,例如可以直接在其他地方调用
class C{
A a = new B$2();
}Top
12 楼Leony(老树)回复于 2003-06-03 09:57:00 得分 0
谢谢大家,请再到这里签到,我会把另外50分给大家:
http://expert.csdn.net/Expert/topic/1863/1863554.xml?temp=.4903681
请再讲一下在窗口中打开一新窗口,它们之间如何传递参数,最好有例子,谢谢,再加50分
Top




