android 关于线程的问题

这个地方就是本来有一个线程要做一个功能,在这个线程中,我需要再开一个线程来执行另一个操作
举个例子,比如这个线程要做一个读卡(就当是公交卡吧)的操作,当我读到卡中的内容,需要根据这个内容,再开一个线程将数据上传到web,两个线程都是必须要的,可以这个样子写吗图片说明,或者直接在这个线程中这样new 一下,求各位大神帮忙解答一下,在线急等

3个回答


之前做的色觉翻译和模拟的时候总出现假死机情况,原因是没加线程,Android把所有的资源都用于处理(执行我的操作),后来加上线程,就没了这假死情况。
在Android系统中创建和启动线程的方法与传统的Java程序相同,首先要创建一个Thread对象,然后使用Thread类的start方法开始一个线程。线程在启动后,就会执行Runnable接口的run方法。......
答案就在这里:关于Android的线程问题
----------------------Hi,地球人,我是问答机器人小S,上面的内容就是我狂拽酷炫叼炸天的答案,除了赞同,你还有别的选择吗?

可以,但是不建议这样做,因为代码很乱.你可以在A线程里面发了更新ui的消息后直接开一个属于A的子线程就好了.handler里面还是不要开线程好.

sinat_33815108
sinat_33815108 回复zero172: 好的,谢谢
大约 3 年之前 回复
zero172
zero172 回复sinat_33815108: 是的
大约 3 年之前 回复
sinat_33815108
sinat_33815108 就是可以直接在那个子线程中,直接开启第二个线程吗?
大约 3 年之前 回复

可以吧,你现在的写法,相当于在主线程又创建了一个子线程去上传卡信息。不建议在handler中去创建,至少看起来感觉比较乱
另外你也可以当在子线程中读取到卡信息时,调用主线程更新UI,就在当前子线程提交卡信息,不用再创建子线程。
除非是读卡线程还要继续读卡,这种情况就立即创建子线程上传信息即可。

sinat_33815108
sinat_33815108 就是直接在那个读卡程序中,直接 可以写 new ThreadSocket(db,upHandler,parms).start();是吗,这个样子不会出现问题的吧
大约 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
android 线程问题 关于handler.post
程序段 为(在activity oncreat方法中):nSystem.out.println("aa");n Runnable r=new Runnable() n n @Overriden public void run() n System.out.println("bb");n n ;n Handler handler =new Handler();n handler.post(r);n n System.out.println("cc");n n 问题:n 为什么执行结果为n aan ccn bbn 而不是n aan bbn ccn runnable对象不是运行在ui线程的吗
关于 Toast 触发android的线程问题
public class ToastUtil n private static Toast toast = null;n public static void showToast(Context context,String content)n if (toast != null)n toast.cancel();n n n Looper.prepare();n toast = Toast.makeText(context,content,Toast.LENGTH_SHORT);n toast.show();n Looper.loop();n nn public static void showToast(Context context,int resid)n showToast(context,context.getString(resid));n nnn这是我封装的Toast的代码,其实也就是在网上下载的,我是定义了一个接口,接口里面会用到这个方法,然后接口的方法会在Asynctask中使用,有的时候就会报错toast Can't create handler inside thread that has not called Looper.prepare(),然后在网上搜索,网上的说在 toast = Toast.makeText(context,content,Toast.LENGTH_SHORT);n toast.show();前面加上Looper.prepare();后面加上 Looper.loop();(刚开始我是没有加的),然后就会报错Only one Looper may be created per thread。。。n 这是为什么啊?
Android UI线程 关于AsyncTask的使用问题
![程序段](https://img-ask.csdn.net/upload/201508/20/1440072111_696762.png)n其中32行报“Illegal modifier for the local class DownloadImageTask; only abstract or final is permitted”这个错误,但是我直接从源码复制过来的,并没有修改内部结构,折腾了很久还是这个错误,跪求高手指点!!!!
关于Java与android线程多次start()问题?
请教如题, 晚上吃完饭没事想到个问题,测试了一下也不明不白的。。望解答。rn 我在android项目里面写了一个按钮,按钮里面开启一个简单的线程 如下。rn Thread thread = new Thread(runnable);rn thread.start();rn 线程里面也不需要做什么事情,就打印了一些数据,我每按一次就打印一次。想请教一下,我每按一次是开启的新线程,多个线程同时工作呢,还是在原线程里面增加了队列依次进行工作? 自己测试和网上找了一下也还没怎么明白。求高手~rn
JAVA/Android 关于两条线程的问题
假如有两条线程,一条是主线程,一条是子线程(访问网络)。 他们在一个方法中, 在主线程有个变量存储子线程的访问结果, 我想确保这个方法return的时候我的主线程变量已经有值了(前提条件:子线程的代码是不能够修改的)rn
Android线程问题
1.把一个Activity变为独立线程运行  在mainifest增加android:process="com.xxx.xxx.webviewthread"属性(独立线程使用system.exit(0)方法退出,可彻底避免内存泄露.如webview的引入. 其他大量泄露代码的情况) 2.加入多线程后, 在logcat左侧的filter列表中, 会出现com.xxx.xxx.webviewthre
android 线程的问题
最近写了个关于蓝牙定位的demo,通过蓝牙的定位的位置弹出alertDialog,可以播放音频文件.alertdialog布局是自定义的.在布局中有seekbar还有button,seekbar是为了显示音频文件播放的进程,然后通过点击button可以播放另外一个音频文件并且button的文字改成正在播放音频文件的名字,也就是说点击button是来回切换的.rnrn我现在碰到的问题是,音频文件可以播放,点击按钮也可以切换到下一首,但是seekbar没有跟音频文件联动,然后button的文字也没有改变.仔细确认了代码没有问题,我又写了个demo,直接点击按钮弹出alertdialog,这种情况下seekbar还有button都可以正常工作.rnrn回到定位的demo,弹出alertdialog是在ui线程处理的(getactivity.runonuithread),但是如果不在ui线程这个dialog就无法弹出来.所以我感觉是进程的问题,想问一下大家这种情况有没有什么好的处理方法?
Android 线程问题
android线程部分(一)
android线程进度条的问题
弄个播放器,很奇怪的,把两个例子综合起来,结果,进度条居然不是按之前意想的一秒一秒的进行,而且一开始当线程运行,即进度条可以有读数之后,其他组件都无法发生单击事件,会说无法响应,跪求知道的朋友教教,我想应该是线程的问题的,对这方面不太熟,我贴上源码,希望有朋友可以帮忙一下。rnpackage com.test;rnrnrnrnimport java.io.File;rnimport java.io.FilenameFilter;rnimport java.util.ArrayList;rnimport java.util.List;rnrnrnrnimport android.app.Activity;rnimport android.app.ListActivity;rnimport android.content.Context;rnimport android.database.DataSetObserver;rnimport android.media.MediaPlayer;rnimport android.media.MediaPlayer.OnCompletionListener;rnimport android.net.Uri;rnimport android.os.Bundle;rnimport android.os.Handler;rnimport android.util.Log;rnimport android.view.LayoutInflater;rnimport android.view.View;rnimport android.view.ViewGroup;rnimport android.view.View.OnClickListener;rnimport android.widget.*;rnrnpublic class music extends ListActivity rn /** Called when the activity is first created. */rn private ImageButton mFrontImageButton = null;rn private ImageButton mStopImageButton = null;rn private ImageButton mStartImageButton = null;rn private ImageButton mPauseImageButton = null;rn private ImageButton mNextImageButton = null;rn /* MediaPlayer对象 */rn public MediaPlayer mMediaPlayer = null;rn private int currentPosition;rn private ProgressBar progressBar;rn private TextView textView;rn private Handler mHandler = new Handler();rn private UpdateStatus thread;rn /* 播放列表 */rn private List mMusicList = new ArrayList();rn private final String PATH="/sdcard/";rn rn @Overridern public void onCreate(Bundle savedInstanceState) rn super.onCreate(savedInstanceState);rn setContentView(R.layout.main);rn rn init();//初始化各个组件rn musicList();rn rn dealListener();//处理按钮监听事件rn thread=new UpdateStatus();rn thread.start();rn// rn rn private void init()rn rn mFrontImageButton = (ImageButton) findViewById(R.id.LastImageButton); rn mStopImageButton = (ImageButton) findViewById(R.id.StopImageButton);rn mStartImageButton = (ImageButton) findViewById(R.id.StartImageButton); rn mPauseImageButton = (ImageButton) findViewById(R.id.PauseImageButton);rn mNextImageButton = (ImageButton) findViewById(R.id.NextImageButton); rn progressBar=(ProgressBar)findViewById(R.id.progress_bar);rn /*构建MediaPlayer对象*/rn mMediaPlayer=new MediaPlayer();rn textView=(TextView)findViewById(R.id.textView);rn textView.setFocusable(false);rn rn rn rn rn @Overridern protected void onListItemClick(ListView l, View v, int position, long id) rn currentPosition=position;rn playMusic(PATH+mMusicList.get(position));rn setTitle(PATH+mMusicList.get(position));rn rn private void dealListener()rn rn //停止按钮rn mStopImageButton.setOnClickListener(new ImageButton.OnClickListener() rn rn @Overridern public void onClick(View v)rn rn /* 是否正在播放 */rn if (mMediaPlayer.isPlaying())rn rn //重置MediaPlayer到初始状态rn mMediaPlayer.reset();rn rn rn ); rn rn //开始按钮rn mStartImageButton.setOnClickListener(new ImageButton.OnClickListener() rn rn @Overridern public void onClick(View v)rn rn tryrn rn playMusic(PATH + mMusicList.get(currentPosition));rn rn catch(Exception e)rn rn e.printStackTrace();rn rn rn ); rn rn //暂停rn mPauseImageButton.setOnClickListener(new ImageButton.OnClickListener() rn rn public void onClick(View view)rn rn if (mMediaPlayer.isPlaying())rn rn /* 暂停 */rn mMediaPlayer.pause();rn rn else rn rn /* 开始播放 */rn mMediaPlayer.start();rn rn rn );rn rn //下一首rn mNextImageButton.setOnClickListener(new ImageButton.OnClickListener() rn rn @Overridern public void onClick(View arg0)rn rn nextmusic();rn rn );rn //上一首rn mFrontImageButton.setOnClickListener(new ImageButton.OnClickListener() rn rn @Overridern public void onClick(View arg0)rn rn frontMusic();rn rn rn );rn rn rn rn private void playMusic(String path)rn rn try rn if(mMediaPlayer!=null) rn mMediaPlayer.reset(); rn /* 设置要播放的文件的路径 */rn mMediaPlayer.setDataSource(path);rn /* 准备播放 */rn mMediaPlayer.prepare();rn /* 开始播放 */rn mMediaPlayer.start();rn rn mMediaPlayer.setOnCompletionListener(new OnCompletionListener() rn rn @Overridern public void onCompletion(MediaPlayer mp) rn // TODO Auto-generated method stubrn nextmusic();rn rn );rn rn catch (Exception e) rn // TODO: handle exceptionrn e.printStackTrace();rn rn rn private void nextmusic()rn // currentPosition=currentPosition+1;rn if(++currentPosition>=mMusicList.size())rn rn currentPosition=0;rn rn playMusic(PATH+mMusicList.get(currentPosition));rn rn rn private void frontMusic()rn rn if(--currentPosition<0)rn rn currentPosition=mMusicList.size();rn rn elsern rn playMusic(PATH+mMusicList.get(currentPosition));rn rn rn public class ListAdapter extends ArrayAdapter rn public ListAdapter(final Context context, final int resource,rn final List string) rn super(context, resource, string);rn rn public final View getView(final int position, View convertView,rn final ViewGroup parent) rn final LayoutInflater inflater = (LayoutInflater) getLayoutInflater();rn convertView = inflater.inflate(R.layout.arrayset, parent, false);rn rn TextView textView = (TextView)convertView.findViewById(R.id.EditText); rn rn textView.setText(music.this.mMusicList.get(position));rn rn return convertView;rn rn rnrn public void musicList()rn rn File home=new File(PATH);rn if(home.listFiles(new MusicFilter()).length>0)rn rn for(File file:home.listFiles(new MusicFilter()))rn mMusicList.add(file.getName());rn setListAdapter(new ListAdapter(this,android.R.layout.simple_list_item_1,mMusicList));rn rn rn /* 过滤文件类型 */rn class MusicFilter implements FilenameFilterrnrn rn public boolean accept(File dir, String name)rn rn //这里还可以设置其他格式的音乐文件rn return (name.endsWith(".mp3"));rn rnrn rn class UpdateStatus extends Thread rn @Overridern public void run() rn while (true) rn while(mMediaPlayer.isPlaying())rn mHandler.post(new Runnable() rn public void run() rn try rn progressBar.setMax(mMediaPlayer.getDuration());rn progressBar.setProgress(mMediaPlayer.getCurrentPosition());rn int pos = 0;rn pos = mMediaPlayer.getCurrentPosition();rn int min = (pos/1000)/60;rn int sec = (pos/1000)%60;rn int maxPos = mMediaPlayer.getDuration();rn int maxMin = (maxPos/1000)/60;rn int maxSec = (maxPos/1000)%60;rn String maxTime = new String();rn if(maxSec<10)rn rn maxTime = ""+maxMin+":0"+maxSec;rn rn elsern rn maxTime = ""+maxMin+":"+maxSec; rn rn rn rn if(sec<10)rn textView.setText(""+min+":0"+sec+"/"+maxTime);rn elsern textView.setText(""+min+":"+sec+"/"+maxTime);rn rn catch (Exception e) rn e.printStackTrace();rn rn rn );rn try rn Thread.sleep(1000);rn catch (InterruptedException e) rn e.printStackTrace();rn rn rn rn rn rn
android 线程 sleep 的问题
写一个线程,是一个while死循环,在线程里面用了sleep(2000)方法rnrn但是实际的时间都会达不到效果rnrnrn比如上一个项目中,我写sleep(5000),实际只有1秒的样子rnrn现在我写sleep(1000),直接不休眠rnrnrnrn代码如下:rn[code=Java]rnboolean key=true;rnwhile(key)rnrn Log.d("","");rn sleep(2000);rnrn[/code]rnrnrnrn求解答为何,并且如何实现暂停rnrnrnrnrnrnrn还有,貌似我直接调用线程的stop方法也有问题,比如rn[code=Java]rnThread p = new Thread()rnrnrnrnp.start();rnrnif(p.isAlive())rnp.stop();rnrn[/code]rnrn求解答
android线程问题
各位大大,有没有遇见过这种问题:rn我开一个子线程,然后在Activity中用AsyncTask改变它的组件,为什么会要等子线程结束后,才能改变组件的?????我想子线程在后台运行,又不想用service哦
Android的线程问题
[size=16px]问大家一个问题:我在照着mars的视频学那个mp3播放器的小demo,遇到问题,他是2.3的版本所有没事,但是4.0以后就不允许在主线程下载东西了,现在我想要的效果是,点击menu,有一个更新列表的选项,点一下,就显示一个listView,把歌曲的信息全列下来,我虽然实现了,但总觉方法不好,我是这么做的:用java的方式新起了一个线程,然后在选项被点击触发的那个方法里先把另起的线程join,然后在用SimpleAdapter,总感觉不大好,请各位指点一下,有什么其他方法?[/size]
Android中线程问题!!!
比如说有一个TextView textview;控件,我再线程的run()中写法如下:rnpublic void run()rntextview.setText("abc");rnrn为什么我再模拟器上运行时老出问题,把textview.setText("abc");注释掉,又能正常运行,还请各位大侠指教!rn
关于线程,和监控线程的问题
如果是遍历生成线程的话,加入一个线程死掉,卡死,会不会影响后面的线程呢?入果想做一个监控线程监控遍历生成的这些线程,又该怎么写呢?rnrnload加载页面:rn[code=csharp]rn private void frmMain_Load(object sender, EventArgs e)rn rn EQ2008Config.GetSection();rn string strpath = AppDomain.CurrentDomain.BaseDirectory + "\\StationConfig.xml";rn XmlDocument doc = new XmlDocument();//初始化一个xml实例rn doc.Load(strpath);//导入指定的xml文件rn XmlNode no = doc.SelectSingleNode("StationList");//指定一个节点rn XmlNodeList listnode = no.SelectNodes("StationData");//获取同名同级别"stationdata"节点集合rn ti = new TimerCallback(ShowDataToScreenStation);rn lockObject = new Object();rn rn foreach (XmlNode node in listnode)//遍历所有的stationdata节点,生成线程rn rn weituo = new WeiTuo(Set_labelText);rn StartThread(node);rn rnrn[/code]rnrn生成label的函数,一个label即一个线程rn[code=csharp]rn public void Set_labelText(XmlNode strText) rn rn this.Invoke((Action)delegate(XmlNode node)rn rn StationData stationData = new StationData(node);rn //stationData.IsShow = false;rn Program.listStationList.Add(stationData);rn this.flowLayoutPanel1.BackColor = Color.Orange;rn Label lab = new Label();//实例一个label显示rnrn lab.Name = "lab" + stationData.CardFlagID.ToString();rn lab.AutoSize = false;rn lab.Size = new Size(280, 140);rn lab.BorderStyle = BorderStyle.Fixed3D;rn lab.Text = stationData.StatinName;rn lab.Font = new Font("宋体", 11);rnrn if (stationData.IsShow)rn rn lab.BackColor = Color.Green;rn rn if (stationData.IsShow)rn rn System.Threading.Timer tim = new System.Threading.Timer(ti, stationData.CardFlagID, 0, 10000);rn //超过0秒后,以及此后每隔10秒间隔,都会调用一次由TimerCallback(ShowDataToScreenStation)指定的委托。rn dicThread.Add(stationData.CardFlagID.ToString(), tim);rnrn rn this.flowLayoutPanel1.Controls.Add(lab);rn , strText);rn rn[/code]rnrntimecallback调用的函数rnrnrn[code=csharp]rnprivate void ShowDataToScreenStation(object stationFlagID)rn rn if (!IsStartUpdateData)rn rn return;rn rn StationData dataRow = Program.listStationList.Find(temp => temp.CardFlagID.ToString() == stationFlagID.ToString());rn tryrn rnrn if (dataRow.State > 0||!dataRow.IsShow)rn return; rnrn dataRow.State = 1;rnrn DateTime dtStart = DateTime.Now;rn if (!PingResult(dataRow.IP))rn rn this.ShowText(dataRow.StatinName, dataRow.CardFlagID, "网络不通,无法显示!!!", false, true);rn return;rn rn List intdaijingList = new List();rn // if (!dicProgralist.TryGetValue(dataRow.CardFlagID.ToString(), out intdaijingList))rn dataRow.IsSendHeadText = 1;rn if(dataRow.IsSendHeadText==0)rn rn Invoke(new MethodInvoker(delegate()//执行委托,委托的返回值为空rn rn tryrn rn EQ2008Class.User_DelAllProgram(dataRow.CardFlagID);rn rn catchrn rn rnrn int Protra = EQ2008Class.User_AddProgram(dataRow.CardFlagID, true, 1000000);rnrn bool isTrue = ShowHeaderText(dataRow, Protra);rn if (isTrue)rn rn dicProgralist.Add(dataRow.CardFlagID.ToString(), new List());rn dicProgralist[dataRow.CardFlagID.ToString()].Add(Protra);rn dataRow.IsSendHeadText = 1;rn rn ));rn rnrn if (dataRow.AJRows > 0 && !isAjUpdate)rn rn ShowAJShiShiDataToScreen(dataRow, 0, 0);rn rn if (dataRow.HJRows > 0&& !isHjupdate)rn rn ShowAJShiShiDataToScreen(dataRow, 0, 1);rn rn tryrn rn Application.DoEvents();rn rn catchrn rn rn //this.txtStatus.Text = "更新[" + dataRow.StatinName + "]数据结束;";rn DateTime dtEnd = DateTime.Now;rn TimeSpan sp = new TimeSpan(dtEnd.Ticks - dtStart.Ticks);rn this.ShowText(dataRow.StatinName, dataRow.CardFlagID, "耗时:" + Convert.ToInt32(sp.TotalSeconds).ToString() + "秒", true, false);rn dataRow.State = 0;rn rn catchrn rn rn rn finallyrn rn dataRow.State = 0;rn rn rn rn[/code]
问题:关于线程的问题!!!!!!!!!!
比如说我利用线程来处理同时测试多个产品的质量,为什么使用线程会减少时间。rn测试每一个产品的时间应该是一定的(假设10秒),那么如果我测10个机器会少于100秒么?为什么?
Android线程和线程池(线程)
**AsyncTask 轻量级的异步任务类**底层用到了线程池,封装了线程池和Handle 方便开发者在子线程更新UI 可以在线程中执行后台任务,然后把执行的进度和最终结果传递给主线程并在主线程中更新UIpublic abstract class AsyncTask&lt;Params, Progress, Result&gt;`Params表示参数的类型 Progress表示后台任务的执行进度的类型
android线程之多线程
相信大家对于什么是android进程和线程的理论应该都有所了解了,不清楚的可以查看这篇文章 android进程和线程 下面进一步学习,如何实现线程和多线程 什么是单线程,什么是多线程?先看这张图 多线程:它是一组指令的集合,在控制流程语句当中,每一个线程就是一条控制语句,线程与线程之间是可以实现数据共享的,所谓多线程,在某一个时间片段同时有多个任务在一起执行。 线程运行过程中的生命周期
Android(线程一) 线程
在Android开发中,我们总是会遇到线程!最近有时间整理了有关Android线程的东西,和大家分享! 一.线程描述。     在Android中,有两种性质的线程,主线程和子线程。     1.主线程。主线程是指进程所拥有的线程,一个进程中只有一个主线程。主线程也叫UI线程,主要作用是处理界面相关的业务。     2.子线程。Android中的耗时操作必须在非UI线程中,否则,可能会
关于线程的问题
其实这个问题纠结很久了,很多版本也不一样,现在也不是很清楚,把现在的情况整理一下吧; 1、首先通过通过GPU-Z或者CUDA-Z会看到有多少个流多处理器、多少个流处理器、每个流多处理器会有多少个threads,每个block至少多少个threads等,关键是线程的分配问题,是不是一个sp(流处理器)执行一个线程,那么多少个sp就只能执行多少个线程,不是这样的。 2、首先分配上根据一个SM最大线
Debug关于线程问题
请大家帮忙解决一下,是关于线程同步的问题,我想了很久,问题是运行时出现白屏
关于线程问题
请教各位高手,我用4个线程执行150万数据的修改,当是整个程序跑完了,还有1300条数据没修改,这是为什么?我要怎么控制线程才能使数据全部改完?
关于线程控制的问题
问题描述:rn开启程序,主线程执行了一个异步网络请求,请求应答还没有回来,迅速开启另外一个线程A,而A需要请求应答的数据,如何处理?rn(在跟踪代码中发现,在开启线程A后,请求应答就在等待,A结束后,就执行了请求应答线程.)
关于线程休眠问题
我在主线程和子线程都printf 显示信息 为什么打印出来的都是主线程的信息,我在主线城休眠了2秒,结果显示子线程每2秒输出以次,难道子线程也休眠2秒了 主线成休眠子线程就休眠了吗> 进程之间也是这样吗
关于线程 的问题。
程序可以同时允许多个同名线程存在吗? 线程的传入参数不一样 。rnrn 望指教。
关于jboss的线程问题
我用jboss作网站服务器时,发现一个问题:rnrn 当我启动jboss后,用浏览器登入初始页面后,发现jboss后台自动另开启了一个线程“Thread [http-0.0.0.0-8080-2] (Running)”。但是当我关闭浏览器之后发现这个线程还一直存在。rnrn请问各位这个现象正确吗?或是jboss的哪里配置不对?应如何关闭此线程。
关于线程,++- -问题
学习线程时,试一小程序如下:rnpackage testthread;rnrn/**rn * Title: rn * Description: rn * Copyright: Copyright (c) 2003rn * Company: rn * @author unascribedrn * @version 1.0rn */rnclass FinalCountrn public static int y=1;rnrnclass Thread1 extends Threadrn private synchronized void countCreate()rn for(int i=0;i<5;i++)rn System.out.println(FinalCount.y);rn ++FinalCount.y;rn rn rn public void run()rn countCreate();rn rnrnclass Thread2 extends Threadrn private synchronized void countCreate()rn for(int i=0;i<5;i++)rn System.out.println(FinalCount.y);rn --FinalCount.y;rn rn rn public void run()rn countCreate();rn rnrnpublic class TestThread rn public static void main(String[] args)rn System.out.println(FinalCount.y);rn Thread1 thread1a=new Thread1();rn Thread1 thread1b=new Thread1();rn Thread2 thread2a=new Thread2();rn Thread2 thread2b=new Thread2();rn thread1a.start();rn thread1b.start();rn thread2a.start();rn thread2b.start();rn rnrnrnrn希望输出为: rn1 rn2 rn3 rn4 rn5 rn6 rn7 rn8 rn9 rn10 rn9 rn8 rn7rn6 rn5 rn4 rn3 rn2 rn1rn可实际输出为:rn1rnrn1rnrn2rnrn3rnrn4rnrn5rnrn6rnrn7rnrn8rnrn9rnrn10rnrn10rnrn10rnrn10rnrn9rnrn8rnrn7rnrn6rnrn5rnrn4rnrn3rn请教各位高手如何修改,得出希望的输出???rnrn
线程问题,关于synchronized
[img=http://image.yotie.com/photo/685/3/12269971396036N41G9.jpg][/img]rnrnrnsynchronized void m1()这边锁住的是整个对象还是这个方法,是不是当有个线程在执行tt的m1()的时候,别的线程就不能执行tt的其它方法,要等人家执行完m1()后放了锁,才能执行tt的方法,实在是搞不清楚rnrn还有,有的程序有synchronized(this).....,这又是什么意思???
关于线程函数的问题
我想在一个类的成员函数中使用AfxBeginThread()rn我的第一个参数使用的是上面这个类中的一个成员函数,编译出错。请问能否将类的成员函数作为线程函数使用
关于线程问题的讨论。
以前做过一个子窗体操作父窗体中控件的例子,就是在子窗体实例化的时候把父窗体中的空间当成子窗体构造函数的参数传过去即可。rnrn我想把这个思路用在线程控制控件显示的例子上(当然用委托可以办到)。rnrn大体思路是这样的:rnrn 声明一个类clsWriteLabel封装要做的事情rn//变量rnpublic string numrn//构造函数rnpublic clsWriteLabel(ref string _num)rnrn this.num = _num;rnrn//方法rn public void WriteLabe()rnrn for (int i = 100; i < 10000; i++)rn rn num = i.ToString(); rn rnrnrn 主窗体rn//声明私有变量(用静态变量也试过)rnprivate string num;rn//方法rn private void StartThreads()rnrn //实例化类rn clsWriteLabel clsWriteLabel = new clsWriteLabel(ref this.num);rn //开始线程rn Thread Thread = new Thread(new ThreadStart(clsWriteLabel.WriteLabe));rn Thread.Start();rn //扫面num的值在窗体控件上显示rn while (!StopListeningFlag)rn rn // 等待用户按下停止按钮。rn this.label1.Text = num;rn // 在等待过程中,让系统处理其他事件。 rn System.Windows.Forms.Application.DoEvents();rn rn //终止线程rn Thread.Interrupt();rnrn以上是主要代码段。我测试的过程中在窗体上num的值一直都是NULL,但是线程里面的num已经赋值了,这个值怎么传不过来?rn
关于C#线程的问题
我怎么用C#线程 来实现在一定时间里 到一个文件夹取一定的图片出来
一个关于线程的问题!
当在同步方法内 调用wait()方法时,会让当前线程进入等待池,去竞争锁。现在我想获得“[color=#FF0000]等待池中线程的个数[/color]”,该怎么做?向各位高手求教了!!!!rn
关于socket线程问题
//监听Socket listenClient 是一个单独的线程,来等待客户端的连接rnrn private void listenClient()rn rn tryrn rn while (1 == 1)rn rn //接受到client连接,为此连接建立新的socket,并接受信息rn Socket nowClientSocket = serverSocket.Accept();//为新建连接创建新的socketrn if (nowClientSocket != null)rn rn..........rnrn这样有没有问题....
关于线程使用的问题??????
[code=C/C++]//在一个按钮响应函数中,创建一个查找线程:rnvoid CChineseToEnglishDlg::OnBnClickedReplace()rnrn m_Search_thread = (HANDLE)_beginthreadex( NULL, 0, Search , this, 0, &m_Search_threadid ); //查找线程 rnrnrn//查找rnunsigned __stdcall CChineseToEnglishDlg::Search(void *obj) rn rn CChineseToEnglishDlg *dlg = (CChineseToEnglishDlg *)obj; rnrn dlg->SearchFile();rnrn return 0; rn rnrnvoid CChineseToEnglishDlg::SearchFile()rnrn ::SendMessage(this->m_hWnd, WM_REPLACE_MESSAGE, 0, 0); //WM_REPLACE_MESSAGE是自定义的一个消息rnrn return;rnrnrn//自定义消息函数rnLRESULT CChineseToEnglishDlg::OnReplace(WPARAM wParam, LPARAM lParam)rnrn rn //这里需要手动关闭上面一个查找线程么?因为查找已经结束了。rn //如果需要,请问应该用什么函数去关闭他呢?rn rn m_Replace_thread = (HANDLE)_beginthreadex( NULL, 0, Replace , this, 0, &m_Replace_threadid ); //替换线程rn rn return 0;rn[/code]rnrn还有,想这种线程中套线程会出现什么问题么?合理么?有更好的方法么?
关于进程,线程的问题
考察下面代码:rnSTARTUPINFO si = sizeof( si ) ;rnPROCESS_INFORMATION pi;rnrnBOOL fSuccess = ::CreateProcess( NULL, TEXT("processC.exe"), NULL, NULL, TRUE, 0, NULL, NULL, &si, &pi );rnrnif ( fSuccess )rnrn DWORD dwExitCode;rnrn ::CloseHandle( pi.hThread );rn ::WaitForSingleObject( pi.hProcess, INFINITE );rn ::GetExitCodeProcess( pi.hProcess, &dwExitCode );rn ::CloseHandle( pi.hProcess );rnrnrn....rnrn问题1:进程的主线程如果被CloseHandle了, 进程也应该结束运行的呀。但结果不是,为什么?rn问题2:把主线程CloseHandle了,可用spy++仍然能看到thread id, 为什么?rn
关于CLIENTDATASET和线程的问题
小弟写了个查询线程,DATASET是ADO或BDE没有什么问题,但换成CLIENTDATASET就提示我 “尚未调用“COINITLIZATION””。WHY ?,望名位大哥赐教
关于surfaceview线程问题
请问SurfaceView的线程什么时候结束?rn例如我在surfaceChanged中执行以下方法rn[code=java] surfaceHolder.setFormat(PixelFormat.TRANSPARENT);rn setZOrderOnTop(true);rn //Lock the canvas and start drawingrn Canvas canvas = surfaceHolder.lockCanvas();rn rn canvas.drawBitmap(AirSpeed, 30, -15, null);rn handRotationMat.postTranslate((AirSpeed.getWidth()/2)-110, (AirSpeed.getHeight()/2)-150); rn canvas.drawBitmap(hand, handRotationMat, null);rn rn surfaceHolder.unlockCanvasAndPost(canvas);rn [/code]rn完了之后,SurfaceView的线程是否还存在?还是知道程序销毁才结束?谢谢
关于线程和一小问题.
[code=Delphi(Pascal)]unit UnitXZLYDSJ;rnrninterfacernrnusesrn Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,rn Dialogs, Grids, DBGrids, StdCtrls, ComCtrls, ExtCtrls, DB, ADODB;rnrntypern TFrmXZLYDSJ = class(TForm)rn Panel4: TPanel;rn LblMessage: TLabel;rn BtnRetry: TButton;rn Panel3: TPanel;rn ProgressBar1: TProgressBar;rn GroupBox9: TGroupBox;rn BtnStart: TButton;rn BtnClose: TButton;rn PanelFCSJ: TPanel;rn GroupBox5: TGroupBox;rn DBGrid03: TDBGrid;rn LabelInfo: TLabel;rn ADOConnection1: TADOConnection;rn DataSource1: TDataSource;rn ADOQuery1: TADOQuery;rn ADOQuery2: TADOQuery; // FrmMain.ADOConnection1rn procedure BtnRetryClick(Sender: TObject);rn procedure FormShow(Sender: TObject);rnrn procedure ShowData;rn procedure BtnStartClick(Sender: TObject);rn procedure BtnCloseClick(Sender: TObject);rn privatern Private declarations rn publicrn Public declarations rn end;rnrnvarrn FrmXZLYDSJ: TFrmXZLYDSJ;rn threadid:dword;rn hthread:thandle;rn do1:boolean;rn procedure down1;rnrnimplementationrnrnuses UnitMain; rn$R *.dfmrnrnprocedure down1;rnbeginrn ProgressBar1.Max:=ADOQuery1.RecordCount; // 54行rn ProgressBar1.Step:=1;rn ADOQuery1.First ;rn while not ADOQuery1.Eof dorn beginrn with ADOQuery2 dorn beginrn close;rn sql.Clear ;rn sql.add('select TOP 1 * from 运单表 where 运单号 = '''+ADOQuery1.FieldByName('运单号').AsString+'''');rn open;rn if not eof thenrn beginrn ADOQuery2.Edit ;rn ADOQuery2.FieldByName('持票人').AsString:=ADOQuery1.FieldByName('持票人').AsString;rn ADOQuery2.FieldByName('领票日期').AsString:=ADOQuery1.FieldByName('领票日期').AsString;rn ADOQuery2.FieldByName('出车编号').AsString:=ADOQuery1.FieldByName('出车编号').AsString;rn ADOQuery2.Post ;rn end;rn end;rn ADOQuery1.Edit;rn ADOQuery1.FieldByName('已下载').AsBoolean:=true;rn ADOQuery1.Post;rn ADOQuery1.Next;rn ProgressBar1.StepIt;rn end;rn LabelInfo.Visible :=true;rn showdata;rn do1:=true;rnend;rnrnprocedure TFrmXZLYDSJ.BtnRetryClick(Sender: TObject);rnbeginrn tryrn ADOConnection1.Connected:=False;rn ADOConnection1.ConnectionString:='Provider=SQLOLEDB.1;Password=88888888;Persist Security Info=True;User ID=jld56;Initial Catalog=jld56;Data Source=255.255.255.255';rn ADOConnection1.LoginPrompt:=false;rn ADOConnection1.Connected:=true;rn LblMessage.Caption:='数据库连接成功!';rn BtnReTry.Enabled:=False;rn exceptrn LblMessage.Caption:='数据库连接失败,请确认网络连接无误后,按“重新连接”按钮!';rn BtnStart.Enabled:=False;rn BtnReTry.Enabled:=True;rn end;rn ShowData;rnend;rnrnprocedure TFrmXZLYDSJ.FormShow(Sender: TObject);rnbeginrn BtnRetry.Click;rn do1:=true;rnend;rnrnprocedure TFrmXZLYDSJ.ShowData;rnbeginrn LabelInfo.Visible :=false;rn with ADOQuery1 dorn beginrn close;rn sql.Clear ;rn sql.Add(' select * from 领运单数据表 where 已下载 = 0 ');rn open;rn if RecordCount<=0 thenrn BtnStart.Enabled :=falsern elsern BtnStart.Enabled :=true; rn end;rnend;rnrnprocedure TFrmXZLYDSJ.BtnStartClick(Sender: TObject);rnbeginrn if MessageDlg('您确定要下载 领运单 数据吗?',mtConfirmation,[mbYes,mbNo],0)=mrNo thenrn exit;rn if do1=true thenrn beginrn hthread:=createthread(nil,0,@down1,nil,0,threadid);rn do1:=false;rn end;rnend;rnrnprocedure TFrmXZLYDSJ.BtnCloseClick(Sender: TObject);rnbeginrn if hthread>0 thenrn terminatethread(hthread,2);rn close;rnrnend;rnrnend.rnrn[/code]rnrn[Error] UnitXZLYDSJ.pas(54): Undeclared identifier: 'ProgressBar1'rn[Error] UnitXZLYDSJ.pas(54): Missing operator or semicolonrn[Error] UnitXZLYDSJ.pas(54): Missing operator or semicolonrn[Error] UnitXZLYDSJ.pas(55): Missing operator or semicolonrn[Error] UnitXZLYDSJ.pas(56): Missing operator or semicolonrn[Error] UnitXZLYDSJ.pas(57): 'DO' expected but identifier 'Eof' foundrn[Error] UnitXZLYDSJ.pas(59): Undeclared identifier: 'ADOQuery2'rn[Error] UnitXZLYDSJ.pas(61): '(' expected but ';' foundrn[Error] UnitXZLYDSJ.pas(62): Undeclared identifier: 'sql'rn[Error] UnitXZLYDSJ.pas(63): Missing operator or semicolonrn[Error] UnitXZLYDSJ.pas(63): Missing operator or semicolonrn[Error] UnitXZLYDSJ.pas(63): Missing operator or semicolonrn[Error] UnitXZLYDSJ.pas(63): 'END' expected but ')' foundrn[Error] UnitXZLYDSJ.pas(65): Missing operator or semicolonrn[Error] UnitXZLYDSJ.pas(67): Missing operator or semicolonrn[Error] UnitXZLYDSJ.pas(68): Missing operator or semicolonrn[Error] UnitXZLYDSJ.pas(68): Missing operator or semicolonrn[Error] UnitXZLYDSJ.pas(68): Missing operator or semicolonrn[Error] UnitXZLYDSJ.pas(68): Missing operator or semicolonrn[Error] UnitXZLYDSJ.pas(69): Missing operator or semicolonrn[Error] UnitXZLYDSJ.pas(69): Missing operator or semicolonrn[Error] UnitXZLYDSJ.pas(69): Missing operator or semicolonrn[Error] UnitXZLYDSJ.pas(69): Missing operator or semicolonrn[Error] UnitXZLYDSJ.pas(70): Missing operator or semicolonrn[Error] UnitXZLYDSJ.pas(70): Missing operator or semicolonrn[Error] UnitXZLYDSJ.pas(70): Missing operator or semicolonrn[Error] UnitXZLYDSJ.pas(70): Missing operator or semicolonrn[Error] UnitXZLYDSJ.pas(71): Missing operator or semicolonrn[Error] UnitXZLYDSJ.pas(75): Missing operator or semicolonrn[Error] UnitXZLYDSJ.pas(76): Missing operator or semicolonrn[Error] UnitXZLYDSJ.pas(76): Missing operator or semicolonrn[Error] UnitXZLYDSJ.pas(77): Missing operator or semicolonrn[Error] UnitXZLYDSJ.pas(78): Missing operator or semicolonrn[Error] UnitXZLYDSJ.pas(79): Missing operator or semicolonrn[Error] UnitXZLYDSJ.pas(81): Declaration expected but identifier 'LabelInfo' foundrn[Error] UnitXZLYDSJ.pas(84): '.' expected but ';' foundrn[Fatal Error] JLDZB.dpr(114): Could not compile used unit '..\下载领运单数据\UnitXZLYDSJ.pas'rnrn
一个关于线程的问题
在程序运行的时候创建了一个线程,代码如下:rnerr = pthread_create(&Thread, NULL, HandlerFunction, Comp);rnerr的值为0,说明创建成功。rnHandlerFunction是该线程的起始函数,但是没有调到这个函数,也就是说没有进入到rnHandlerFunction函数中去,不知道为什么?是不是还需要做一些其他的工作?rn请哪位高手指点一下,谢谢!!!
关于线程问题。
首先惭愧的说下。我不会线程啊。。。。。。。rn rnrnrn 当点击按钮的时候,首先是一段frame动画。定时结束动画,stop之后想隐藏其在xml当中的ImageViewrnrnrn当时在定时器里边就报错了。 线程的话该如何解决呢。rnrnrn android当中子线程更新UI,如果做呢。。。rnrnrnrn 拜谢。rnrnrn[code=Java]image3 = (ImageView) findViewById(R.id.image3);rn image = (ImageView) findViewById(R.id.imageId);// 显示动画的imageviewrn image.setBackgroundResource(R.drawable.iamge);// 设置显示动画的image的背景资源参数是int,就是你自己写的frame.xml,里面是所有相关的图片rn attackAnimation = (AnimationDrawable) image.getBackground();rnrn btn3 = (Button) findViewById(R.id.baifo_btn3);rn btn3.setOnClickListener(new OnClickListener() rnrn @Overridern public void onClick(View v) rn image.setVisibility(View.VISIBLE);rn image3.setVisibility(View.INVISIBLE);rn attackAnimation.start();rn Timer timer = new Timer();rn TimerTask task = new TimerTask() rn @Overridern public void run() rn attackAnimation.stop();rn image.setVisibility(View.INVISIBLE);rn image3.setVisibility(View.VISIBLE);rn rn ;rn timer.schedule(task, 1000 * 8); // 定时关闭rn rn );[/code]
关于C线程的问题
请问各位大侠:能否介绍一些书籍是关于讲解C线程开发方面的吗?rn因为小弟正想学习这方面的东西
相关热词 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池 c#5.0 安装程序 c# 分页算法 c# gmail 发邮件 c# 多层文件