首页 > 解决方案 > 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}"
            }                      
       }
    }

标签: multithreadingjenkinsjenkins-pipeline

解决方案


詹金斯有一个特殊的步骤 - parallel()。在此步骤中,您可以构建另一个作业或调用管道代码。


推荐阅读