Index: /trunk/src/test/java/omq/test/multiThread/MultiInterface.java
===================================================================
--- /trunk/src/test/java/omq/test/multiThread/MultiInterface.java	(revision 89)
+++ /trunk/src/test/java/omq/test/multiThread/MultiInterface.java	(revision 89)
@@ -0,0 +1,14 @@
+package omq.test.multiThread;
+
+import omq.Remote;
+import omq.client.annotation.RemoteInterface;
+import omq.client.annotation.SyncMethod;
+
+@RemoteInterface
+public interface MultiInterface extends Remote {
+	@SyncMethod(retry = 1, timeout = 2000)
+	public void sleepMethod() throws InterruptedException;
+
+	@SyncMethod(retry = 1, timeout = 2000)
+	public int getZero();
+}
Index: /trunk/src/test/java/omq/test/multiThread/RemoteMulti.java
===================================================================
--- /trunk/src/test/java/omq/test/multiThread/RemoteMulti.java	(revision 89)
+++ /trunk/src/test/java/omq/test/multiThread/RemoteMulti.java	(revision 89)
@@ -0,0 +1,22 @@
+package omq.test.multiThread;
+
+import omq.server.RemoteObject;
+
+public class RemoteMulti extends RemoteObject implements MultiInterface {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+
+	public void sleepMethod() throws InterruptedException {
+		System.out.println("I'm going to sleep");
+		Thread.sleep(40000);
+	}
+
+	public int getZero() {
+		System.out.println("Zero!!!");
+		return 0;
+	}
+
+}
Index: /trunk/src/test/java/omq/test/multiThread/ThreadTest.java
===================================================================
--- /trunk/src/test/java/omq/test/multiThread/ThreadTest.java	(revision 89)
+++ /trunk/src/test/java/omq/test/multiThread/ThreadTest.java	(revision 89)
@@ -0,0 +1,111 @@
+package omq.test.multiThread;
+
+import static org.junit.Assert.assertTrue;
+
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Properties;
+
+import omq.common.broker.Broker;
+import omq.common.util.ParameterQueue;
+import omq.common.util.Serializer;
+
+import org.junit.After;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.junit.runners.Parameterized.Parameters;
+
+/**
+ * 
+ * @author Sergi Toda <sergi.toda@estudiants.urv.cat>
+ * 
+ */
+@RunWith(value = Parameterized.class)
+public class ThreadTest {
+
+	private static Broker broker;
+	private static MultiInterface multi;
+
+	public ThreadTest(String type) throws Exception {
+		Properties env = new Properties();
+		env.setProperty(ParameterQueue.USER_NAME, "guest");
+		env.setProperty(ParameterQueue.USER_PASS, "guest");
+
+		// Set host info of rabbimq (where it is)
+		env.setProperty(ParameterQueue.RABBIT_HOST, "127.0.0.1");
+		env.setProperty(ParameterQueue.RABBIT_PORT, "5672");
+		env.setProperty(ParameterQueue.DURABLE_QUEUE, "false");
+		env.setProperty(ParameterQueue.PROXY_SERIALIZER, type);
+		env.setProperty(ParameterQueue.ENABLE_COMPRESSION, "false");
+
+		// Set info about where the message will be sent
+		env.setProperty(ParameterQueue.RPC_EXCHANGE, "rpc_exchange");
+
+		// Set info about the queue & the exchange where the ResponseListener
+		// will listen to.
+		env.setProperty(ParameterQueue.RPC_REPLY_QUEUE, "reply_queue");
+
+		broker = new Broker(env);
+		multi = broker.lookup("thread", MultiInterface.class);
+	}
+
+	@Parameters
+	public static Collection<Object[]> data() {
+		Object[][] data = new Object[][] { { Serializer.JAVA }, { Serializer.GSON }, { Serializer.KRYO } };
+		return Arrays.asList(data);
+	}
+
+	@BeforeClass
+	public static void server() throws Exception {
+		Properties env = new Properties();
+		env.setProperty(ParameterQueue.USER_NAME, "guest");
+		env.setProperty(ParameterQueue.USER_PASS, "guest");
+
+		// Get host info of rabbimq (where it is)
+		env.setProperty(ParameterQueue.RABBIT_HOST, "127.0.0.1");
+		env.setProperty(ParameterQueue.RABBIT_PORT, "5672");
+		env.setProperty(ParameterQueue.DURABLE_QUEUE, "false");
+		env.setProperty(ParameterQueue.ENABLE_COMPRESSION, "false");
+
+		// Set info about where the message will be sent
+		env.setProperty(ParameterQueue.RPC_EXCHANGE, "rpc_exchange");
+		env.setProperty(ParameterQueue.RETRY_TIME_CONNECTION, "2000");
+		env.setProperty(ParameterQueue.NUM_THREADS, "4");
+
+		RemoteMulti rm = new RemoteMulti();
+
+		Broker broker = new Broker(env);
+		broker.bind("thread", rm);
+
+		System.out.println("Server started");
+	}
+
+	@After
+	public void stop() throws Exception {
+		broker.stopBroker();
+	}
+
+	@Test
+	public void test() throws Exception {
+		new Thread() {
+			@Override
+			public void run() {
+				try {
+					multi.sleepMethod();
+				} catch (InterruptedException e) {
+					e.printStackTrace();
+				}
+			}
+		}.start();
+
+		ZeroThread t = new ZeroThread(multi);
+		t.start();
+
+		Thread.sleep(200);
+
+		assertTrue(t.isReceived());
+	}
+
+}
Index: /trunk/src/test/java/omq/test/multiThread/ZeroThread.java
===================================================================
--- /trunk/src/test/java/omq/test/multiThread/ZeroThread.java	(revision 89)
+++ /trunk/src/test/java/omq/test/multiThread/ZeroThread.java	(revision 89)
@@ -0,0 +1,36 @@
+package omq.test.multiThread;
+
+public class ZeroThread extends Thread {
+	private MultiInterface m;
+	private boolean received;
+
+	public ZeroThread(MultiInterface m) {
+		this.m = m;
+		received = false;
+	}
+
+	@Override
+	public void run() {
+		int zero = m.getZero();
+		if (zero == 0) {
+			received = true;
+		}
+	}
+
+	public MultiInterface getM() {
+		return m;
+	}
+
+	public void setM(MultiInterface m) {
+		this.m = m;
+	}
+
+	public boolean isReceived() {
+		return received;
+	}
+
+	public void setReceived(boolean received) {
+		this.received = received;
+	}
+
+}
