| @@ -1,68 +0,0 @@ | |||||
| /** | |||||
| * Created by qianjia on 15/1/25. | |||||
| */ | |||||
| public class TestNonAtomicLongAssignment { | |||||
| private static final long HI = 1l << 32; | |||||
| private static final long LO = 1l; | |||||
| private static final long TEST_NUMBER = HI | LO; | |||||
| private static long assignee = 0l; | |||||
| public static void main(String[] args) { | |||||
| Thread writer = new Thread(new Runnable() { | |||||
| @Override | |||||
| public void run() { | |||||
| while (true) { | |||||
| assignee = TEST_NUMBER; | |||||
| } | |||||
| } | |||||
| }); | |||||
| writer.setDaemon(true); | |||||
| Thread reader = new Thread(new Runnable() { | |||||
| @Override | |||||
| public void run() { | |||||
| long i = 0; | |||||
| while (true) { | |||||
| i++; | |||||
| long test = assignee; | |||||
| if (test != TEST_NUMBER) { | |||||
| System.out.print(i + " times:" + toBin(test)); | |||||
| break; | |||||
| } | |||||
| } | |||||
| } | |||||
| }); | |||||
| // Thread worker = new Thread(new Runnable() { | |||||
| // @Override | |||||
| // public void run() { | |||||
| // double d = 89009808877238948224343435452333323113131313133434434341212323232424243434335354232390490189190420928348910913094983.323334401928d; | |||||
| // while(true) { | |||||
| // Math.cbrt(d); | |||||
| // d = d - 1l; | |||||
| // } | |||||
| // } | |||||
| // }); | |||||
| // worker.setDaemon(true); | |||||
| // worker.start(); | |||||
| writer.start(); | |||||
| reader.start(); | |||||
| } | |||||
| public static String toBin(long n) { | |||||
| StringBuilder sb = new StringBuilder(Long.toBinaryString(n)); | |||||
| int padding = 64 - sb.length(); | |||||
| while (padding > 0) { | |||||
| sb.insert(0, '0'); | |||||
| padding--; | |||||
| } | |||||
| return sb.toString(); | |||||
| } | |||||
| } | |||||