multithreading - Jenkins 流水线脚本 - 线程编程
问题描述
我正在尝试在 jenkins 管道脚本中创建多个线程。所以,我举了一个简单的例子,如下所示。但它不起作用。你能告诉我吗?
在下面的示例中,jobMap 包含作为字符串的键和作为字符串列表的值。当我只显示列表时,值打印正确,但是当我使用 3 种不同的方式创建线程并因此显示时,它不起作用。
for ( item in jobMap )
{
def jobList = jobMap.get(item.key);
**// The following loop is printing the values**
for (jobb in jobList)
{
echo "${jobb}"
}
// 线程实现1:
Thread.start
{
for (jobb in jobList)
{
echo "${jobb}"
}
}
// 线程实现2:
def t = new Thread({ echo 'hello' } as Runnable)
t.start() ;
t.join();
// 线程实现3:
t1 = new Thread( new TestMultiThreadSleep(jobList));
t1.start();
}
class TestMultiThreadSleep implements Runnable {
String jobs;
public TestMultiThreadSleep(List jobs) {
this.jobs = jobs;
}
@Override
public void run()
{
echo "coming here"
for (jobb in jobs)
{
echo "${jobb}"
}
}
}
解决方案
詹金斯有一个特殊的步骤 - parallel()。在此步骤中,您可以构建另一个作业或调用管道代码。
推荐阅读
- amazon-web-services - 客户端 VPN 端点 - 多用户访问
- java - Android:当应用程序的多个屏幕具有相似的布局时,避免代码重复的最佳方法是什么?
- django - 在 Django REST Framework 的 CreateAPIView 中的 create() 之后返回不同的序列化程序
- android - 静默更新和安装apk,不显示私人服务器的任何提示
- jquery - 一页中的多个 Summernote 所见即所得编辑器具有相同的占位符
- ios - 如何修复 Alamofire 5 错误:“无法专门化非泛型类型 'DataResponseSerializer'”?
- php - 使用 inline-block 在 dompdf 中的元素下方添加空间
- r - 如果单个级别在 t 中有多个项目,如何从因子级别中提取项目
- excel - 在 VBA 中从两个不同的 excel 文件创建 PPT
- angular - 何时以角度取消订阅 SSE 事件源事件(关闭/刷新案例)