A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© mf152 中级黑马   /  2013-9-10 01:04  /  1408 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

runonUiThread(new Runnable){
        Public void run(){
                mTextView.setText(result);
}
};

为什么不能直接

runonUiThread(
       
                mTextView.setText(result);

};呢?


评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

5 个回复

倒序浏览
开启线程是new Thread().start()方法,这个start会去执行继承Thread类中的run()方法,而你采用匿名内部类的话,必须覆写这个run方法,否则你怎么通过start方法调用run方法中的内容呢?

评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

回复 使用道具 举报
写线程的目的是为了让自己的一部分代码能够与有些代码参与同时运行,这些代码就是线程的任务,而线程的任务必须定义在run()方法中,这样只有调用start()方法后才可以运行自己的任务。start方法一方面是开启线程,另一方面调用run()方法,如果run方法都没有,我们怎么封装自己的任务呢。

评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

回复 使用道具 举报
第一:run()方法用于存放线程所执行的代码
第二:结合此题,只有覆盖Runnable接口中的run()方法,才能调用底层的start()方法去开启线程
回复 使用道具 举报
首先我说一下run()和start()的区别:
如果直接调用run()方法的话,那么就是像调用普通的方法一样,但是不如果调用的是start()方法的话,那么他会启动一个线程,然后自动调用run()方法,然后和其他线程抢占资源,

run()是Runnable接口中的一个方法,子类必须覆盖,然后才有资格启动一个线程,也就是他是启动线程必备的一个条件。

希望对你有帮助!
回复 使用道具 举报
我们平常开启一个子线程不是有继承thread 和new  runnable 这两种方法吗。这里的new  runnable  为啥还要开启一个线程?


runonUiThread(//这里是子线程
new Runnable){//有啥作用
        Public void run(){
                mTextView.setText(result);
}
};

画线的部分去掉后 ,为什么不可以呢

3Q  

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马