Index: src/benchmark/Makefile.am
===================================================================
--- src/benchmark/Makefile.am	(revision fdd378689d3d56d0079d126007dfd882e43af0e4)
+++ src/benchmark/Makefile.am	(revision 2b716ec28ad95c2132e5e2ff74fd1bb6fb81fd9d)
@@ -94,5 +94,7 @@
 	ctxswitch-cfa_thread.run	\
 	ctxswitch-upp_coroutine.run	\
-	ctxswitch-upp_thread.run
+	ctxswitch-upp_thread.run	\
+	ctxswitch-goroutine.run		\
+	ctxswitch-java_thread.run
 
 ctxswitch-cfa_coroutine$(EXEEXT):
@@ -110,4 +112,13 @@
 ctxswitch-pthread$(EXEEXT):
 	@@BACKEND_CC@ ctxswitch/pthreads.c  -DBENCH_N=50000000  -I. -lrt -pthread                    ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+
+ctxswitch-goroutine$(EXEEXT):
+	@go build -o a.out ctxswitch/goroutine.go
+
+ctxswitch-java_thread$(EXEEXT):
+	@javac ctxswitch/JavaThread.java
+	@echo "#!/bin/sh" > a.out
+	@echo "cd ctxswitch && java JavaThread" >> a.out
+	@chmod a+x a.out
 
 ## =========================================================================================================
@@ -183,5 +194,7 @@
 	creation-cfa_thread.run			\
 	creation-upp_coroutine.run		\
-	creation-upp_thread.run
+	creation-upp_thread.run			\
+	creation-goroutine.run			\
+	creation-java_thread.run
 
 creation-cfa_coroutine$(EXEEXT):
@@ -202,4 +215,13 @@
 creation-pthread$(EXEEXT):
 	@@BACKEND_CC@ creation/pthreads.c  -DBENCH_N=250000     -I. -lrt -pthread                    ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+
+creation-goroutine$(EXEEXT):
+	@go build -o a.out creation/goroutine.go
+
+creation-java_thread$(EXEEXT):
+	@javac creation/JavaThread.java
+	@echo "#!/bin/sh" > a.out
+	@echo "cd creation && java JavaThread" >> a.out
+	@chmod a+x a.out
 
 ## =========================================================================================================
Index: src/benchmark/Makefile.in
===================================================================
--- src/benchmark/Makefile.in	(revision fdd378689d3d56d0079d126007dfd882e43af0e4)
+++ src/benchmark/Makefile.in	(revision 2b716ec28ad95c2132e5e2ff74fd1bb6fb81fd9d)
@@ -507,5 +507,7 @@
 	ctxswitch-cfa_thread.run	\
 	ctxswitch-upp_coroutine.run	\
-	ctxswitch-upp_thread.run
+	ctxswitch-upp_thread.run	\
+	ctxswitch-goroutine.run		\
+	ctxswitch-java_thread.run
 
 ctxswitch-cfa_coroutine$(EXEEXT):
@@ -523,4 +525,13 @@
 ctxswitch-pthread$(EXEEXT):
 	@@BACKEND_CC@ ctxswitch/pthreads.c  -DBENCH_N=50000000  -I. -lrt -pthread                    ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+
+ctxswitch-goroutine$(EXEEXT):
+	@go build -o a.out ctxswitch/goroutine.go
+
+ctxswitch-java_thread$(EXEEXT):
+	@javac ctxswitch/JavaThread.java
+	@echo "#!/bin/sh" > a.out
+	@echo "cd ctxswitch && java JavaThread" >> a.out
+	@chmod a+x a.out
 
 mutex$(EXEEXT) :\
@@ -592,5 +603,7 @@
 	creation-cfa_thread.run			\
 	creation-upp_coroutine.run		\
-	creation-upp_thread.run
+	creation-upp_thread.run			\
+	creation-goroutine.run			\
+	creation-java_thread.run
 
 creation-cfa_coroutine$(EXEEXT):
@@ -611,4 +624,13 @@
 creation-pthread$(EXEEXT):
 	@@BACKEND_CC@ creation/pthreads.c  -DBENCH_N=250000     -I. -lrt -pthread                    ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+
+creation-goroutine$(EXEEXT):
+	@go build -o a.out creation/goroutine.go
+
+creation-java_thread$(EXEEXT):
+	@javac creation/JavaThread.java
+	@echo "#!/bin/sh" > a.out
+	@echo "cd creation && java JavaThread" >> a.out
+	@chmod a+x a.out
 
 compile$(EXEEXT) :\
Index: src/benchmark/creation/JavaThread.java
===================================================================
--- src/benchmark/creation/JavaThread.java	(revision 2b716ec28ad95c2132e5e2ff74fd1bb6fb81fd9d)
+++ src/benchmark/creation/JavaThread.java	(revision 2b716ec28ad95c2132e5e2ff74fd1bb6fb81fd9d)
@@ -0,0 +1,18 @@
+public class JavaThread {
+	public static class MyThread extends Thread {
+		@Override
+		public void run() {}
+	}
+
+	public static void main(String[] args) throws InterruptedException {
+		int NoOfTimes = 50000;
+		long start = System.nanoTime();
+		for(int i = 1; i <= NoOfTimes; i += 1) {
+			JavaThread.MyThread m = new JavaThread.MyThread();
+        		m.start();
+			m.join();
+		}
+		long end = System.nanoTime();
+		System.out.println( (end - start) / NoOfTimes);
+	}
+}
Index: src/benchmark/creation/goroutine.go
===================================================================
--- src/benchmark/creation/goroutine.go	(revision 2b716ec28ad95c2132e5e2ff74fd1bb6fb81fd9d)
+++ src/benchmark/creation/goroutine.go	(revision 2b716ec28ad95c2132e5e2ff74fd1bb6fb81fd9d)
@@ -0,0 +1,27 @@
+package main
+
+import (
+    "fmt"
+    "time"
+)
+
+var shake chan bool = make( chan bool )
+
+func noop() {
+	shake <- true   // indicate completion
+}
+
+//=======================================
+// benchmark driver
+//=======================================
+
+func main() {
+	const NoOfTimes = 500000
+	start := time.Now()
+	for i := 1; i <= NoOfTimes; i += 1 {
+		go noop()		// creation
+	}
+	end := time.Now()
+	fmt.Printf("%d\n", end.Sub(start) / time.Duration(NoOfTimes))
+	<- shake
+}
Index: src/benchmark/ctxswitch/JavaThread.java
===================================================================
--- src/benchmark/ctxswitch/JavaThread.java	(revision 2b716ec28ad95c2132e5e2ff74fd1bb6fb81fd9d)
+++ src/benchmark/ctxswitch/JavaThread.java	(revision 2b716ec28ad95c2132e5e2ff74fd1bb6fb81fd9d)
@@ -0,0 +1,11 @@
+public class JavaThread {
+	public static void main(String[] args) {
+		int NoOfTimes = 5000000;
+		long start = System.nanoTime();
+		for(int i = 1; i <= NoOfTimes; i += 1) {
+			Thread.yield();
+		}
+		long end = System.nanoTime();
+		System.out.println( (end - start) / NoOfTimes);
+	}
+}
Index: src/benchmark/ctxswitch/goroutine.go
===================================================================
--- src/benchmark/ctxswitch/goroutine.go	(revision 2b716ec28ad95c2132e5e2ff74fd1bb6fb81fd9d)
+++ src/benchmark/ctxswitch/goroutine.go	(revision 2b716ec28ad95c2132e5e2ff74fd1bb6fb81fd9d)
@@ -0,0 +1,33 @@
+package main
+
+import (
+    "fmt"
+    "runtime"
+    "time"
+)
+
+//=======================================
+// time context switch
+//=======================================
+
+var shake chan bool = make( chan bool )
+
+func ContextSwitch(N int) {
+	start := time.Now()
+	for i := 1; i <= N; i += 1 {
+		runtime.Gosched()
+	}
+	end := time.Now()
+	fmt.Printf("%d\n", end.Sub(start) / time.Duration(N))
+	shake <- true   // indicate completion
+}
+
+//=======================================
+// benchmark driver
+//=======================================
+
+func main() {
+	const NoOfTimes = 10000000
+	go ContextSwitch( NoOfTimes )		// context switch
+	<- shake
+}
