Beispiel für Threads und Tasks

Mit dem CICSExecutorService können Sie einen Thread erstellen, der eine Task in CICS startet. Wenn Sie diesen Service für die Erstellung eines Threads verwenden, wird eine CICS-Task erstellt, die über die JCICS-API auf CICS-Services zugreifen kann.

Sie haben zwei Möglichkeiten für die Erstellung eines Threads, der eine CICS-Task startet. Wenn Ihr Code portierbar sein soll, können Sie den ExecutorService im OSGi-Framework verwenden. Wird die Anwendung in einem JVM-Server ausgeführt, verwendet das OSGi-Framework automatisch die CICS-Implementierung für den Start einer CICS-Task, wenn ein Thread erstellt wird. Wenn Sie eine Anwendung speziell für CICS schreiben, können Sie mit JCICS die Klasse CICSExecutorService direkt verwenden.

Das folgende Beispiel stellt einen Auszug einer Java-Klasse dar, die einen Thread startet, um eine Warteschlange für temporären Speicher zu erstellen und einige Daten in die Warteschlange zu schreiben.
package com.ibm.cics.executor.test;

import com.ibm.cics.server.CICSExecutorService;
import com.ibm.cics.server.TSQ;
import com.ibm.cics.server.TSQType;

public class ExecutorTest 
{
    public static void main(String[] args) 
    {                                        
        // Integrieren der neuen ausführbaren Klasse 
        class CICSJob implements Runnable
        {             
            public void run()
            {
                // Erstellen einer Warteschlange für temporären Speicher
                TSQ test_tsq = new TSQ();
                test_tsq.setType(TSQType.MAIN);

                // Festlegen des Namens der Warteschlange für temporären Speicher
                test_tsq.setName("TSQWRITE");
                   
                // Schreiben in die Warteschlange für temporären Speicher 
                // Verwenden der lokalen CCSID der CICS-Region, damit sie lesbar ist
                String test_string = "Hello from a non CICS Thread - "+ threadId;
                try
                {
                    test_tsq.writeItem(test_string.getBytes(System.getProperty("com.ibm.cics.jvmserver.local.ccsid")));                                                     
                } 
                catch (Exception e)
                {
                    e.printStackTrace();
                }                   
            }
        }

        // Erstellen und Ausführen der neuen ausführbaren CICSJob-Task
        Runnable task = new CICSJob();
        CICSExecutorService.runAsCICS(task);                                                           
    }
}