とりあえずこんな感じにデザインしてみようか

package test;
import java.lang.*;

type

actor Server is
    procedure push(String msg);
end

actor Client is
    String msg;
    Server svr;
    constructor(String msg, Server svr);
    procedure start();
end

implementation

procedure Main(String[] args)
var
    Server server;
    Client client01, client02;
begin
    server = new Server();
    client01 = new Client("c01", server);
    client02 = new Client("c02", server);
    client01.start();
    client02.start();
end

procedure Server.push(String msg)
begin
    System.out.println(msg);
end

constructor Client(String msg, Server svr)
begin
    this.msg = msg;
    this.svr = svr;
end

procedure Client.start()
var
    int i;
begin
    for i = 0 to 10 do
        svr.push(msg + ":" + i);
        sleep(1000);
    end
end

うーん。ちょっと微妙。もう少し考える。
というより静的型付け止めようかな。記述が冗長すぎて困る。