Prev Next

Java / volatile

volatile example.

package com.tutorials.volatileKeyword.volatileExample;

public class MyThread {

	private static volatile int Shared_Variable = 0;

	public static void main(String[] args) {
		new ReadOnChange().start();
		new Writer().start();
	}

	static class ReadOnChange extends Thread {
		@Override
		public void run() {
			int local_value = Shared_Variable;
			while (local_value < 5) {
				if (local_value != Shared_Variable) {
					System.out.println("Value changed for Shared_Variable :"
							+ Shared_Variable);
					local_value = Shared_Variable;
				}
			}
		}
	}

	static class Writer extends Thread {
		@Override
		public void run() {

			int local_value = Shared_Variable;
			while (Shared_Variable < 5) {
				System.out.println("changing the Shared_Variable to "
						+ (local_value + 1));
				Shared_Variable = ++local_value;
				try {
					Thread.sleep(300);
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
			}
		}
	}
}

Output:

 changing the Shared_Variable to 1
Value changed for Shared_Variable :1
changing the Shared_Variable to 2
Value changed for Shared_Variable :2
changing the Shared_Variable to 3
Value changed for Shared_Variable :3
changing the Shared_Variable to 4
Value changed for Shared_Variable :4
changing the Shared_Variable to 5
Value changed for Shared_Variable :5

Output (with no volatile keyword):

changing the Shared_Variable to 1
changing the Shared_Variable to 2
changing the Shared_Variable to 3
changing the Shared_Variable to 4
changing the Shared_Variable to 5

More Related questions...

Show more question and Answers...


Comments & Discussions