Terracotta 更接近于“分层”模型——所有客户端应用程序都与 Terracotta 服务器阵列通信(更重要的是,它们不会相互通信)。Terracotta 服务器阵列能够为规模和可用性进行集群(镜像,用于可用性,条带化,用于规模)。
无论如何,正如您可能知道的那样,Terracotta 使您能够像在单个 JVM 中一样通过使用 POJO 同步/等待/通知或使用任何 java.util.concurrent 原语(例如 ReentrantReadWriteLock)来表达跨集群的并发性, CyclicBarrier, AtomicLong, FutureTask 等等。
Terracotta Cookbook中有很多简单的食谱展示了这些原语的用法。
作为示例,我将发布 ReentrantReadWriteLock 示例(注意没有“Terracotta”版本的锁 - 您只需使用普通的 Java ReentrantReadWriteLock)
import java.util.concurrent.locks.*;
public class Main
{
    public static final Main instance = new Main();
    private int counter = 0;
    private ReentrantReadWriteLock rwl = new ReentrantReadWriteLock(true);
    public void read()
    {
        while (true) {
            rwl.readLock().lock();
                try {
                System.out.println("Counter is " + counter);
            } finally {
                rwl.readLock().unlock();
            }
            try { Thread.currentThread().sleep(1000); } catch (InterruptedException ie) {  }
        }
    }
    public void write()
    {
        while (true) {
            rwl.writeLock().lock();
            try {
               counter++;
               System.out.println("Incrementing counter.  Counter is " + counter);
            } finally {
                 rwl.writeLock().unlock();
            }
            try { Thread.currentThread().sleep(3000); } catch (InterruptedException ie) {  }
        }
    }
    public static void main(String[] args)
    {
        if (args.length > 0)  {
            // args --> Writer
            instance.write();
        } else {
            // no args --> Reader
            instance.read();
        }
    }
}