diff --git a/Technology/ProConUnprotected/.classpath b/Technology/ProConUnprotected/.classpath
new file mode 100644
index 0000000..463d5f9
--- /dev/null
+++ b/Technology/ProConUnprotected/.classpath
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/Technology/ProConUnprotected/.project b/Technology/ProConUnprotected/.project
new file mode 100644
index 0000000..8347d52
--- /dev/null
+++ b/Technology/ProConUnprotected/.project
@@ -0,0 +1,17 @@
+
+
+ ProConUnprotected
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+
+ org.eclipse.jdt.core.javanature
+
+
diff --git a/Technology/ProConUnprotected/.settings/org.eclipse.core.resources.prefs b/Technology/ProConUnprotected/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/Technology/ProConUnprotected/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/=UTF-8
diff --git a/Technology/ProConUnprotected/.settings/org.eclipse.jdt.core.prefs b/Technology/ProConUnprotected/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..9a7984b
--- /dev/null
+++ b/Technology/ProConUnprotected/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,11 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=21
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=21
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=21
diff --git a/Technology/ProConUnprotected/src/Buffer.java b/Technology/ProConUnprotected/src/Buffer.java
new file mode 100644
index 0000000..f83e439
--- /dev/null
+++ b/Technology/ProConUnprotected/src/Buffer.java
@@ -0,0 +1,5 @@
+
+public interface Buffer {
+ public void set( int va1ue ); // place value into Buffer
+ public int get(); // return value from Buffer
+}
diff --git a/Technology/ProConUnprotected/src/Consumer.java b/Technology/ProConUnprotected/src/Consumer.java
new file mode 100644
index 0000000..71c8af2
--- /dev/null
+++ b/Technology/ProConUnprotected/src/Consumer.java
@@ -0,0 +1,24 @@
+
+public class Consumer extends Thread {
+ private Buffer sharedLocation;
+
+ public Consumer( Buffer shared ) {
+ super("Consumer");
+ sharedLocation = shared;
+ }
+
+ public void run() {
+ int sum = 0;
+ for (int count = 1; count <= 4; count++) {
+ try {
+ Thread.sleep((int)(Math.random() * 3001));
+ sum += sharedLocation.get();
+ }
+ catch (InterruptedException ex) {
+ ex.printStackTrace();
+ }
+ }
+ System.err.println( getName() + " read values totalling: " + sum + " ...DONE");
+ }
+
+}
diff --git a/Technology/ProConUnprotected/src/Producer.java b/Technology/ProConUnprotected/src/Producer.java
new file mode 100644
index 0000000..77e0347
--- /dev/null
+++ b/Technology/ProConUnprotected/src/Producer.java
@@ -0,0 +1,22 @@
+
+public class Producer extends Thread {
+ private Buffer sharedLocation;
+
+ public Producer( Buffer shared ) {
+ super("Producer");
+ sharedLocation = shared;
+ }
+
+ public void run() {
+ for (int count = 1; count <= 4; count++) {
+ try {
+ Thread.sleep((int)(Math.random() * 3001));
+ sharedLocation.set(count);
+ }
+ catch (InterruptedException ex) {
+ ex.printStackTrace();
+ }
+ }
+ System.err.println( getName() + " done producing.");
+ }
+}
diff --git a/Technology/ProConUnprotected/src/SharedBufferTest.java b/Technology/ProConUnprotected/src/SharedBufferTest.java
new file mode 100644
index 0000000..640a16a
--- /dev/null
+++ b/Technology/ProConUnprotected/src/SharedBufferTest.java
@@ -0,0 +1,15 @@
+
+public class SharedBufferTest {
+
+ public static void main(String[] args) {
+ // TODO Auto-generated method stub
+ Buffer sharedLocation = new UnsynchronizedBuffer();
+
+ Producer producer = new Producer( sharedLocation);
+ Consumer consumer = new Consumer( sharedLocation);
+
+ producer.start();
+ consumer.start();
+ }
+
+}
diff --git a/Technology/ProConUnprotected/src/UnsynchronizedBuffer.java b/Technology/ProConUnprotected/src/UnsynchronizedBuffer.java
new file mode 100644
index 0000000..1ba7b20
--- /dev/null
+++ b/Technology/ProConUnprotected/src/UnsynchronizedBuffer.java
@@ -0,0 +1,15 @@
+
+public class UnsynchronizedBuffer implements Buffer {
+ private int buffer = -1;
+
+ public void set( int value ) {
+ System.err.println( Thread.currentThread().getName() + " writes " + value);
+ buffer = value;
+ }
+
+ public int get() {
+ System.err.println( Thread.currentThread().getName() + " reads " + buffer);
+ return buffer;
+ }
+
+}