thread()
例子:
String time = "";
void setup() {
size(100, 100);
}
void draw() {
background(0);
// 没30帧要求一下数据
if (frameCount % 30 == 0) {
thread("requestData");
}
text(time, 10, 50);
}
//这发生在一个单独的线程,可以采取只要它想要的
void requestData() {
JSONObject json = loadJSONObject("http://time.jsontest.com/");
time = json.getString("time");
}
描述:处理草图按照一个特定的步骤顺序:首先setup(),然后在循环中重复执行draw()。线程也是一个开始,中间和结束的一系列步骤。处理草图是单线程,通常被称为“动画”线程。然而,其他线程的序列可以独立于主动画循环运行。实际上,您可以一次启动任意数量的线程,并且它们都将同时运行。
你不能从一个由thread()函数调用的函数画画。因为它独立运行,代码将不会与动画线程同步,导致奇怪或至少不一致的结果。使用thread()加载文件或执行其他需要时间的任务。任务完成后,设置一个指示任务完成的变量,并从draw()方法内检查。
处理通常使用线程,例如使用库函数,如captureEvent()和movieEvent()。这些功能由不同的线程在后台运行触发,并且每当有事情要报告时,它们会提醒处理。当您需要执行太长时间的任务并减慢主要动画的帧速率(例如从网络抓取数据)时,这很有用。如果一个单独的线程卡住或出现错误,整个程序将不会停止,因为错误只会停止该单独的线程。
编写自己的线程可能是一个复杂的工作,涉及扩展Java Thread类。然而,thread()方法是在Processing中实现一个简单线程的一种快速而肮脏的方式。通过传入与草图中其他地方声明的函数的名称相匹配的String,Processing将在单独的线程中执行该函数。
语法:thread(name)
参数:name 字符串:一个可被执行的方法
返回 空
相关:setup()
draw()
loop()
noLoop()
- 本文固定链接: http://iprocessing.cn/2017/06/30/thread多线程/
- 转载请注明: 卡萨布兰卡 于 Processing编程艺术 发表
《thread()多线程》有 1 条评论