因为多线程不是顺序执行的, 不能用常规的单线程代码逻辑去理解.
如果想要"不乱", 那就不要使用多线程.你可以这样理解, 多线程是跑步比赛, 有的会先到终点, 有的会后到. 每次进行比赛时, 名次都会有所不同(也就是你说的"乱").
另外, 在多线程中使用 调试输出 的时候, 需要加许可证, 不加的话, 调试输出 可能会有问题.
这里给出了正确的写法, 仅供参考:
窗口程序集名 | 保 留 | 保 留 | 备 注 | 窗口程序集_启动窗口 | | | | 变量名 | 类 型 | 数组 | 备 注 | 许可证 | 整数型 | |
许可证 = 创建进入许可证 () 计次循环首 (3, 数 ) 启动线程 (&子程序1, 数, ) 计次循环尾 ()输出 (格式化文本 (“当前线程:%d 子程序1”, 数 )) 子程序2 (数 )输出 (格式化文本 (“当前线程:%d 子程序2 ”, 数 )) 结果 = 子程序3 (数 )输出 (格式化文本 (“当前线程:%d 返回值: %d”, 数, 结果 )) 返回 (数 )进入许可区 (许可证 )调试输出 (结果 )退出许可区 (许可证 )
下面是可能会出现的结果:
开始运行被调试程序
* “当前线程:2 子程序1”
* “当前线程:1 子程序1”
* “当前线程:3 子程序1”
* “当前线程:2 子程序2 ”
* “当前线程:1 子程序2 ”
* “当前线程:3 子程序2 ”
* “当前线程:1 返回值: 1”
* “当前线程:2 返回值: 2”
* “当前线程:3 返回值: 3”
被调试易程序运行完毕
|