求教线程如何jquery控制button隐藏三个不同的button自动触发

C#语言,button的click事件中开启一个新线程_百度知道
C#语言,button的click事件中开启一个新线程
button_click中有一个其它功能A和一个更新数据库的操作,一共两个功能,因为涉及到很多条数据更新,所以靠循环来实现
for(i=n个){功能A+更新}。
这个实现方式需要与数据库多次连接,所以在n比较大的时候,button_click事件响应比较慢。现在想通过在button_c...
我有更好的答案
开线程处理费时的操作肯定可行,你这里的问题主要是功能A和数据库操作之间是否有紧密关联,容不容易分开,如果容易的话直接按你的想法做就可以了如果无法分开处理你可以都放到线程处理,同时显示个进度条,这样给用户看就容易让人理解,心里上也会舒服很多
功能A是实现的是图片框图片的改变,如从图A转成图B。数据库操作是把图A的标识符转换成图B的标志符。我想的是我不太明白这个容易不容易分开,请您大概判断一下
功能A是实现的是图片框图片的改变,如从图A转成图B。数据库操作是把图A的标识符转换成图B的标志符。我想的是我不太明白这个容易不容易分开,请您大概判断一下
根据你的要求,换了图片,那必然要更新数据库对应内容,因此你直接都放到线程里处理好了,处理量大也不会影响界面的刷新
还是有影响的,从视觉上看,要隔大约5秒左右。
采纳率:65%
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。一.
任务:通过按钮控制暂停的4个小球;按一次按钮就改变一次状态。
方法说明:在按钮事件里控制线程对象的状态,调用对象的方法改变其状态。
二.思路与源代码:
基本思路:设置一个bool值控制线程里的画图部分,为真则继续画,为假就休眠(时间设短点即可,每隔一段时间就会再检查一次bool的值)。在休眠时让i递减,这样再开始时小球就会从原位置开始。
在主函数内开启4个线程。加一个按钮,给按钮加动作监听器。把4个线程传入监听器。在线程中创建一个公有方法改变线程的属性BOOL值,在监听器中调用,按一次按钮就改变一次。即可完成控制。
PS:小球的绘制在上篇中的程序的基础上修改。
主函数:
import java.awt.D
import java.awt.G
import javax.swing.JB
import javax.swing.JF
import javax.swing.JP
public class ball3 extends JFrame{
&&& boolean go=
* @param args
public static void main(String[] args) {
// TODO Auto-generated method stub
&&&&&&& ball3 b=new ball3();
&&&&&&& b.InitGUI();
private void InitGUI() {
// TODO Auto-generated method stub
this.setTitle("球");
this.setSize(new Dimension(600,600));
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(3);
this.setResizable(false);
this.setVisible(true);
Graphics g=this.getGraphics();
JPanel JP=new JPanel();
JButton BU=new JButton("PUSH");
this.add(JP);
JP.add(BU);
//创建4个线程,开启它们
Printthred3 l=new Printthred3(g,1,go);
l.start();
Printthred3 l2=new Printthred3(g,2,go);
l2.start();
Printthred3 l3=new Printthred3(g,3,go);
l3.start();
Printthred3 l4=new Printthred3(g,4,go);
l4.start();
&&&&&&&&&&&&&&&&& //给鼠标加监听器,传入4个线程
BUAction3 ll=new BUAction3(g,go,l,l2,l3,l4);
BU.addActionListener(ll);
线程类Printthred3:
import java.awt.C
import java.awt.G
/**
* @author IRISL
*/
public class Printthred3 extends Thread{
int ii=0,jj=0,c1=0,c2=0,c3=0,c4=0;
//构造方法,传入画布,类型和布尔值
public Printthred3(Graphics g,int type,boolean go){
this.type=
& //RUN函数
public void run(){
&&&
if(type==1)draw1();
&&&
if(type==2)draw2();
&&&
if(type==3)draw3();
&&&
if(type==4)draw4();
&&& }
public void changego(){
//从左上角出现的球
&&& public void draw1(){
&&&
for (int i=0;i&100000;i++){
&&&
& if(this.go){
&&&
c1=c1+1;
&&&
g.setColor(new Color((100),(200),(c1)%256));
&&&
if(i&=300){
&&&
&& g.clearRect(300-(ii-300),300-(ii-300), 30, 30);
&&&
&&&&&& g.fillOval(300-(i-300), 300-(i-300), 30, 30);
&&&
&& { g.clearRect(ii, jj, 30, 30);
&&&
g.fillOval(i, i, 30, 30);
&&&
&&&& Thread.sleep(10);
&&&
& }catch(Exception ef){}
&&&
& ii=i;jj=i;
&&&
}else{
&&&
&&&& Thread.sleep(10);
&&&
&&&& i--;
&&&
& }catch(Exception ef){}
&&&
&&& //从方向2出现的球
&&& public void draw2(){
&&&
for (int i=0;i&1000;i++){
&&&
if(this.go){
&&&
c2=c2+1;
&&&
g.setColor(new Color((100),(200),(c2)%256));
&&&
if(i&=300){
&&&
&& g.clearRect(ii,300-(ii-300), 30, 30);
&&&
&&&&&& g.fillOval(i, 300-(i-300), 30, 30);
&&&
&& { g.clearRect(ii, 600-jj, 30, 30);
&&&
g.fillOval(i, 600-i, 30, 30);
&&&
&&&& Thread.sleep(10);
&&&
& }catch(Exception ef){}
&&&
& ii=i;jj=i;
&&&
&&&& Thread.sleep(10);
& }catch(Exception ef){}
}
&&& }
&&&
&&& //从方向3出现的球
&&& public void draw3(){
&&&
for (int i=0;i&1000;i++){
&&&
if(this.go){
&&&
c3=c3+1;
&&&
g.setColor(new Color((250),(c3)%256,(250)));
&&&
if(i&=300){
&&&
&& g.clearRect(300-(ii-300),ii, 30, 30);
&&&
&&&&&& g.fillOval(300-(i-300), i, 30, 30);
&&&
&& { g.clearRect(600-ii, jj, 30, 30);
&&&
g.fillOval(600-i, i, 30, 30);
&&&
&&&& Thread.sleep(10);
&&&
& }catch(Exception ef){}
&&&
& ii=i;jj=i;
&&&
}else{
&&&&&
&&&& Thread.sleep(10);
&&&
&&&& i--;
&&&
& }catch(Exception ef){}
&&&
}
&&& }
&&&
&&& //从方向4出现的球
&&& public void draw4(){
&&&
for (int i=0;i&1000;i++){
&&&
if(this.go){
&&&
c4=c4+1;
&&&
g.setColor(new Color((250),(c4)%256,(250)));
&&&
if(i&=300){
&&&
&& g.clearRect(ii,ii, 30, 30);
&&&
&&&&&& g.fillOval(i,i, 30, 30);
&&&
&& { g.clearRect(600-ii,600-jj, 30, 30);
&&&
g.fillOval(600-i, 600-i, 30, 30);
&&&
&&&& Thread.sleep(10);
&&&
& }catch(Exception ef){}
&&&
& ii=i;jj=i;
&&&
}else{
&&&&&
&&&& Thread.sleep(10);
&&&
&&&& i--;
&&&
& }catch(Exception ef){}
&&&
监听器:
import java.awt.G
import java.awt.event.ActionE
import java.awt.event.ActionL
public class BUAction3 implements ActionListener{
&&& private G
&&&
&&& private Printthred3 p,p2,p3,p4;
&&& //重新构造方法,传入4个线程
&&& public BUAction3(Graphics g,boolean go,Printthred3 p,Printthred3 p2,Printthred3 p3,Printthred3 p4){
&&&
this.g=g;
&&&
this.go=
&&&
this.p=p;
&&&
this.p4=p4;
&&&
this.p2=p2;
&&&
this.p3=p3;
&&& }
&&& //修改线程中的go的值
public void actionPerformed(ActionEvent e) {&&&
p.changego();
p2.changego();
p3.changego();
p4.changego();
在如何修改线程的BOOL属性上纠结了一下,果然思路要清晰啊。
浏览: 3517 次
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'线程函数想访问窗口类的按钮响应函数怎么办呢?
[问题点数:40分,结帖人kxltsuperr]
线程函数想访问窗口类的按钮响应函数怎么办呢?
[问题点数:40分,结帖人kxltsuperr]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2015年11月 扩充话题大版内专家分月排行榜第一2015年7月 扩充话题大版内专家分月排行榜第一2015年1月 扩充话题大版内专家分月排行榜第一2014年9月 扩充话题大版内专家分月排行榜第一(补)2013年9月 扩充话题大版内专家分月排行榜第一2013年8月 扩充话题大版内专家分月排行榜第一2013年7月 扩充话题大版内专家分月排行榜第一
2016年3月 扩充话题大版内专家分月排行榜第二2015年12月 扩充话题大版内专家分月排行榜第二2015年6月 扩充话题大版内专家分月排行榜第二2015年2月 扩充话题大版内专家分月排行榜第二2014年10月 扩充话题大版内专家分月排行榜第二2014年8月 扩充话题大版内专家分月排行榜第二
2015年11月 扩充话题大版内专家分月排行榜第一2015年7月 扩充话题大版内专家分月排行榜第一2015年1月 扩充话题大版内专家分月排行榜第一2014年9月 扩充话题大版内专家分月排行榜第一(补)2013年9月 扩充话题大版内专家分月排行榜第一2013年8月 扩充话题大版内专家分月排行榜第一2013年7月 扩充话题大版内专家分月排行榜第一
2016年3月 扩充话题大版内专家分月排行榜第二2015年12月 扩充话题大版内专家分月排行榜第二2015年6月 扩充话题大版内专家分月排行榜第二2015年2月 扩充话题大版内专家分月排行榜第二2014年10月 扩充话题大版内专家分月排行榜第二2014年8月 扩充话题大版内专家分月排行榜第二
匿名用户不能发表回复!|Android 线程thread的两种实现方法(必看)
转载 &发布时间:日 09:00:04 & 投稿:jingxian
下面小编就为大家带来一篇Android 线程thread的两种实现方法(必看)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
这篇文章中有三点需要提前说明一下,
一:在android中有两种实现线程thread的方法:
一种是,扩展java.lang.Thread类
另一种是,实现Runnable接口
二:Thread类代表线程类,它的两个最主要的方法是:
run()——包含线程运行时所执行的代码
Start()——用于启动线程
三: Handler 机制,它是Runnable和Activity交互的桥梁,在run方法中发送Message,在Handler里,通过不同的Message执行不同的任务。
下面分别给出两种线程的实现方法,其一,扩展java.lang.Thread类,也就是把run()方法写到线程里面:
package com.
import android.app.A
import android.os.B
import android.os.H
import android.os.M
import android.util.L
import android.view.V
import android.view.View.OnClickL
import android.widget.B
public class Demo_For_Copy extends Activity
public Handler mHandler=new Handler()
public void handleMessage(Message msg)
switch(msg.what)
button.setText(R.string.text2);
super.handleMessage(msg);
/** Called when the activity is first created. */
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
button=(Button)findViewById(R.id.button);
Thread thread=new Thread(new Runnable()
public void run()
Log.e("1111", "");
// TODO Auto-generated method stub
Message message=new Message();
message.what=1;
mHandler.sendMessage(message);
thread.start();
其二,实现Runnable接口,让类实现Runnable接口,然后把run方法单独提出来:
package com.
import android.app.A
import android.os.B
import android.os.H
import android.os.M
import android.util.L
import android.view.V
import android.view.View.OnClickL
import android.widget.B
import android.widget.LinearL
public class Title_Change_Demo extends Activity implements Runnable
public LinearLayout my_
public Handler mHandler=new Handler()
public void handleMessage(Message msg)
switch(msg.what)
button.setText(R.string.text2);
my_layout.invalidate();
super.handleMessage(msg);
/** Called when the activity is first created. */
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
button=(Button)findViewById(R.id.button);
my_layout=(LinearLayout)findViewById(R.id.my_layout);
Thread thread=new Thread(this);
thread.start();
public void run()
Log.e("ok", "");
// TODO Auto-generated method stub
Message message=new Message();
message.what=1;
mHandler.sendMessage(message);
以上这篇Android 线程thread的两种实现方法(必看)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
四种线程同步控制方法介绍.doc 39页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
下载提示
1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
2.该文档所得收入(下载+内容+预览三)归上传者、原创者。
3.登录后可充值,立即自动返金币,充值渠道很便利
你可能关注的文档:
··········
··········
VC 多线程编程
编写一个耗时的单线程程序:
  新建一个基于对话框的应用程序SingleThread,在主对话框IDD_SINGLETHREAD_DIALOG添加一个按钮,ID为IDC_SLEEP_SIX_SECOND,标题为“延时6秒”,添加按钮的响应函数,代码如下:?
void?CSingleThreadDlg::OnSleepSixSecond()? { ?????? Sleep(6000);?//延时6秒 }
编译并运行应用程序,单击“延时6秒”按钮,你就会发现在这6秒期间程序就象“死机”一样,不在响应其它消息。为了更好地处理这种耗时的操作,我们有必要学习——多线程编程。 ????进程和线程都是操作系统的概念。进程是应用程序的执行实例,每个进程是由私有的虚拟地址空间、代码、数据和其它各种系统资源组成,进程在运行过程中创建的资源随着进程的终止而被销毁,所使用的系统资源在进程终止时被释放或关闭。   线程是进程内部的一个执行单元。系统创建好进程后,实际上就启动执行了该进程的主执行线程,主执行线程以函数地址形式,比如说main或WinMain函数,将程序的启动点提供给Windows系统。主执行线程终止了,进程也就随之终止。   每一个进程至少有一个主执行线程,它无需由用户去主动创建,是由系统自动创建的。用户根据需要在应用程序中创建其它线程,多个线程并发地运行于同一个进程中。一个进程中的所有线程都在该进程的虚拟地址空间中,共同使用这些虚拟地址空间、全局变量和系统资源,所以线程间的通讯非常方便,多线程技术的应用也较为广泛。   多线程可以实现并行处理,避免了某项任务长时间占用CPU时间。要说明的一点是,目前大多数的计算机都是单处理器(CPU)的,为了运行所有这些线程,操作系统为每个独立线程安排一些CPU时间,,这就给人一种假象,好象这些线程都在同时运行。由此可见,如果两个非常活跃的线程为了抢夺对CPU的控制权,在线程切换时会消耗很多的CPU资源,反而会降低系统的性能。这一点在多线程编程时应该注意。   Win32?SDK函数支持进行多线程的程序设计,并提供了操作系统原理中的各种等操作。Visual?C++?6.0中,使用MFC类库也实现了多线程的程序设计,使得多线程编程更加方便。 ?Win32?提供了一系列的API函数来完成线程的等工作。下面将选取其中的一些重要函数进行说明。?
1、HANDLE?CreateThread(LPSECURITY_ATTRIBUTES?lpThreadAttributes, ?????????????????DWORD?dwStackSize, ?????????????????LPTHREAD_START_ROUTINE?lpStartAddress, ?????????????????LPVOID?lpParameter, ?????????????????DWORD?dwCreationFlags, ?????????????????LPDWORD?lpThreadId);
该函数在其调用进程的进程空间里一个新的线程,并返回已建线程的句柄,其中各参数说明如下: lpThreadAttributes:指向一个?SECURITY_ATTRIBUTES?结构的指针,该结构决定了线程的安全属性,一般置为?NULL;? dwStackSize:指定了线程的堆栈深度,一般都设置为0;? lpStartAddress:表示新线程开始执行时代码所在函数的地址,即线程的起始地址。一般情况为(LPTHREAD_START_ROUTINE)ThreadFunc,ThreadFunc?是线程函数名;? lpParameter:指定了线程执行时传送给线程的32位参数,即线程函数的参数;? dwCreationFlags:控制线程创建的附加标志,可以取两种值。如果该参数为0,线程在被创建后就会立即开始执行;如果该参数为CREATE_SUSPENDED,则系统产生线程后,该线程处于挂起状态,并不马上执行,直至函数ResumeThread被调用;? lpThreadId:该参数返回所创建线程的ID;?
如果创建成功则返回线程的句柄,否则返回NULL。?
2、DWORD?SuspendThread(HANDLE?hThread); 该函数用于挂起指定的线程,如果函数执行成功,则线程的执行被终止。?
3、DWORD?ResumeThread(HANDLE?hThread); 该函数用于结束线程的挂起状态,执行线程。?也就是指定的线程
4、VOID?ExitThread(DWORD?dwExitCode); 该函数用于线程自身的执行,主要在线程的执行函数中被调用。其中参数dwExitCode用来设置线程的退出码。?
正在加载中,请稍后...

我要回帖

更多关于 js控制button隐藏 的文章

 

随机推荐