Android Thread第二次Thread.start()报错的疑问

使用BeeWare将Python图形程序打包为安卓APP的完整指南 Python作为通用编程语言,在跨平台开发领域展现出强大潜力。通过字节码转换和原生接口桥接技术,开发者可以将Python代码转换为移动端可执行文件。BeeWare工具链利用VOC编译器将Python字节码转为JVM字节码,配合Rubicon-Java实现与安卓API的交互,这种技术方案特别适合快速原型开发和教育类应用。在移动开发实践中,该方案能显著降低开发门槛,使Python开发者无需掌握Java/Kotlin就能构建原生安卓应用。通过合理配置Briefcase打包工具和优化APK体积,开发者可以高效地将T 阅读详情

http://blog.youkuaiyun.com/libaineu2004/article/details/25692655


文章来源:http://my.oschina.net/ldaga/blog/65213

http://blog.youkuaiyun.com/jspamd/article/details/5262894

网上说Thread不需要stop()的原因是因为运行到尾部就会自动释放,而代码:

01 Thread myThread = new Thread(new Runnable() {
02  
03     @Override
04     public void run() {
05         // TODO Auto-generated method stub
06         Log.i("thread", "" + count);
07         while (runable) {
08              
09                 count++;
10                 try {
11                     Thread.sleep(100);
12                 } catch (Exception e) {
13                 }
14                 Message msg = mhandler.obtainMessage(FLAG_UPDATE, 0, 0);
15                 mhandler.sendMessage(msg);
16             }
17          
18     }
19 });

在第二次start()的时候,系统抛出异常:java.lang.IllegalThreadStateException: Thread already started.

这是个很悲催的事情,而我现在也只能,这样:

01 Thread myThread = new Thread(new Runnable() {
02  
03     @Override
04     public void run() {
05         // TODO Auto-generated method stub
06         Log.i("thread", "" + count);
07         while (true) {
08             if (runable) {
09                 count++;
10                 try {
11                     Thread.sleep(100);
12                 } catch (Exception e) {
13                 }
14                 Message msg = mhandler.obtainMessage(FLAG_UPDATE, 0, 0);
15                 mhandler.sendMessage(msg);
16             }
17         }
18     }
19 });

        不过这样的牺牲就是有线程在无限循环...性能...

        不知列位大牛是怎么处理这里的。

 

这个已经解决了,可以写一个继承Thread的类,或者写一个Runnable,然后再new Thread(xx).start();就可以了,回头看一下,真小白啊!


新代码如下:

创建一个Runnable,用于Thread执行

1 Runnable sendable = new Runnable() {
2  
3     @Override
4     public void run() {
5         // TODO Auto-generated method stub
6  
7     }
8 };
run方法中写上需要操作的逻辑,然后这样调用:

1 new Thread(sendable).start();
这样,每次需要调用的时候会重新new一个Thread,大体是这样,但可以无限次数运行。
HDLbits找茬实战:5个Verilog仿真Bug修复案例,新手避坑指南 本文通过HDLbits平台上的5个典型Verilog仿真Bug案例,详细解析了多路选择器位宽不匹配、模块实例化端口映射错误等常见问题,提供实用的修复方案和调试技巧,帮助Verilog新手快速掌握代码验证与仿真技能,避免常见陷阱。 阅读详情

相关推荐

yolov10+bytetrack实现多目标跟踪

在训练yolov10权重的时候一定要注意将类别信息改成自己的信息。把类比什么的改成自己的数据集,数据集的路径也要替换自己的路径。就可以训练自己的数据集了,训练完之后得到自己的权重文件。自己创建一个.yaml文件用于自己数据集的路径选择。工具标注自己的数据集,一定要分清楚自己的类别信息。使用以下代码可以按照比例划分自己的数据集。之后打开命令框输入以下命令进入标注页面。只需要输入好自己数据集的路径就可以开始。将代码里面的nc改成自己的真实类别。修改完之后,运行train.py。然后标注自己的数据集就行。

l15717690526的博客 1528

IllegalThreadStateException: Thread already started解决

IllegalThreadStateException的原因解析mThread = new MThread(); mThread.start(); mThread.interrupt(); mThread.start();这段代码运行,就会出现上面的异常,从字面是理解也很容易理解:非法线程状态异常,线程已经start。具体原因也很容易找到,看一下thread.start()里面做了什么: pu

抽烟的青蛙的专栏 6821

初级文章【西门子】字符拼接成字符串

针对S7-400极其以下PLC,1200往上据说有专门的块了呢,首先,我是不用库的,需要什么函数会自己写,OK进入正题。 首先,我们有一个DB块,里面有14个char,一个14位的char数组和一个14位的string。如下图。 我们的目的是将char1-char10拼接成一个string。 第一种方式:第一步,将char放进数组。 ​​​​​​​ 相信大家都能看明白,但是我还是要解释解释 L取值2 T赋值到临时变量DBNO(INT) OPN DB [#DBNO]获取DB块,这一句.

NS_Speak(IVAV) 1万+

Thread Already Started报错解决方案

网上说Thread不需要stop()的原因是因为运行到尾部就会自动释放,而代码: 01 Thread myThread = new Thread(new Runnable() { 02   03     @Override 04

sinat_29243417的博客 2785

我用 AI Agent 全自动跑 COMSOL 仿真:从建模到后处理,踩了 10+ 个深坑

本文探讨了利用AI通过COMSOL Java API实现AI芯片液冷冷板全流程自动化仿真的实践。针对700W高功耗AI芯片的散热需求,构建了包含4颗Chiplet和微通道冷板的三维液冷模型。通过严格设计的Prompt工程,AI Agent成功完成了从几何建模到结果验证的全过程,最终实现了芯片最高温度54°C的良好散热效果。文章重点分享了10个关键问题的解决经验,包括流体连通性验证、网格顺序控制、离散阶数选择、收敛判据优化等,并建立了包含流场/热场/网格独立性的三重验证体系。实践表明,AI可高效处理重复性工作

sjjsjjsjjsjjsjj的博客 980

创建可视化机房

(3)窗户位置创建好以后需要对窗户的墙面镂空位置进行修补,具体操作为,选中镂空位置的顶点(这里必须是选择一个平面的顶点,不要跨平面选择),实际操作如下图:选择点以后,鼠标右键,选择【从顶点创建边/面】,或者按F键,随后对其他镂空位置进行相同操作;(2)将【物体模式】修改为【编辑模式】,选中-x对应面的所有顶点,移动顶点位置,其他放小调整按照同理,找到选中对应面的所有顶点,移动位置即可;调整动画事件轴上的线,选中关键帧的时间,调整模型的位置或者旋转角度,具体根据插入关键帧菜单选择的项进行模型的相关调整。

SmileBu丿㦌的博客 2068

Android中如何解决Thread is already started问题

有两种方式: 1.

XiaoL_2015的博客 4095

【Android面试八股文】Handler如果没有消息处理是阻塞的还是非阻塞的?Looper 为什么要使用死循环?Android中为什么主线程不会因为Looper.loop()里的死循环卡死?

Handler如果没有消息处理是阻塞的还是非阻塞的? Looper 为什么要使用死循环? Android中为什么主线程不会因为Looper.loop()里的死循环卡死?

字节卷动 760

java thread already started_使用Openfire和Asmack实现IM功能,常常出现“Thread already started”的错误...

近期使用Openfire和Asmack实现Android端的IM功能,可是实际使用的过程中,常常出现“java.lang.IllegalThreadStateException:Thread already started”的错误。比方:java.lang.IllegalThreadStateExceptionThread already startedjava.lang.Thread.check...

weixin_42283048的博客 279

Android 10.0 SystemUI 屏蔽状态栏消息推送弹出的悬浮通知

在状态栏中,有一些通知类似 消息推送 弹出的 悬浮通知,弹出30秒之后会消失掉 要想屏蔽掉这些通知,首选知道这些通知是怎么产生的 通知类型 NotificationContentInflater.java 详细的介绍各种通知的类型 frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentInflater.java /** * The defau

安卓兼职framework和app工程师的博客 1542

用 ADT 的 RAP Generator 把 RAP 栈一键搭起来:从表到可预览的 OData V4 应用

摘要 SAP RAP Generator 工具能显著提升开发效率,通过一键生成从数据库表到完整 OData UI Service 的全套对象(包括 CDS、Behavior、Service Definition 等)。该工具特别适用于原型验证和标准化应用开发,可节省 60% 以上的基础编码时间。使用时需注意: 表设计需包含关键管理字段(如 last_changed 时间戳) 向导配置决定分层架构和命名规范 生成结果包含可立即预览的 Fiori Elements 界面 后续可专注于业务逻辑增强(校验、权限等)

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1280

解决 java.lang.IllegalThreadStateException: Thread already started. 错误

第一种解决方案:单击事件开启线程时,再次单击就会出现 java.lang.IllegalThreadStateException: Thread already started. 错误 解决办法: 创建一个Runnable: Runnable DownloadRunnable = new Runnable() { @Override public

u012435852的博客 1万+

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

android thread错误,Android Thread第二次Thread.start()报错的疑问

网上说Thread不需要stop()的原因是因为运行到尾部就会自动释放,而代码:Thread myThread = new Thread(new Runnable() {@Overridepublic void run() {// TODO Auto-generated method stubLog.i("thread", "" + count);while (runable) {count++;...

weixin_35130780的博客 655

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Android中 Thread二次start()

方式一(每次都新建线程): 1.首先新建一个Runnable对象: Runnable myable = new Runnable() { @Override public void run() { // TODO Auto-generated method stub } }; 2.然后在需要启动的地方新建一个Thread: new Thread(myable).start(); 这样,就会每次新建一个线程了,并且它会自动运行完后关闭自身。问题解决。 参考:

了解—学习—进步—满足 569

Android中如何解决Thread第二次Thread.start()报错

写了一个线程去实现获取服务端数据。然后将数据解析并发送Handler给UI更新。然而线程是写在一个Button的监听器里面的,当第一次单击是获取数据并绘制界面UI,第二次是清除UI上绘制的数据,到了第三次又重新获取数据并绘制,如此循环……         于是问题出现了,当第三次点击Button的时候,就是第二次start()的时候,系统抛出异常:java.lang.IllegalThreadS

vaecer 4326

Android中thread.start()出现的thread already exist错误

报错信息: FATAL EXCEPTION: main                                                                           Process: com.example.lxx.game_lxx, PID: 31256

____Lxx的博客 1280

Thread.run()方法与Thread.start()方法的区别

           今天在android上开发,大家都知道,2.3之后请求网络不可以放到主线程中,这是防止主线程阻塞。         然而,我在运行线程的时候使用了不小心用了run方法,导致一直报android.os.NetworkOnMainThreadException错误。                   事实上,Thread.run()方法,是在当前线程中运行线程里面的run(...

适度 993

同一个线程不要调用2次Thread.start()

同一个线程,如果调用start()两次会报异常:Exception in thread "main" java.lang.IllegalThreadStateException 看源码: /* Java thread status for tools, * initialized to indicate thread 'not yet started' */ private volat...

Wengzhengcun的博客 769

Android性能优化之Thread native层源码分析(InternalError/Out of memory)

线程创建到启动过程:从Thread.start()-> c++层CreateNativeThread()->JNIEnvExt::Create()创建JniEnv ->c++层pthread_create()—> allocate_thread()分配堆内存->Linux层clone()拷贝新线程-> 反射调用Thread.run()

HeXinGen的博客 656

java中两次调用方法_在同一个Thread上调用start方法两次是否合法?

问题以下代码导致java.lang.IllegalThreadStateException: Thread already started,当我第二次调用start()method****3程序时。updateUI.join();if (!updateUI.isAlive())updateUI.start();这发生在秒timeupdateUI.start()被调用。我已经多次执行它并调用线程并在...

weixin_42099987的博客 497

Android创建线程的方式及启动方式分析

本文介绍两方面的知识: 一.创建线程的两种方式 二.启动线程start和run的分析   一.创建线程的两种方式     java提供两种创建线程的方式: 1.继承Thread private void createThread(){     new MyThread().start(); } private class MyThread extends Thread{    ...

认真做事,开心生活 4449

【安卓学习之webrtc】webrtc_android

提示:这里是参考的相关文章。

任我飞的博客 290
上一篇: Toast 自定义显示位置,toast和通讯录的a-z 一起走 部分代码
下一篇: 怎样使用Ipad远程控制你的电脑
千雅爸爸
博客等级 码龄18年 292粉丝 639原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值