All Downloads are FREE. Search and download functionalities are using the official Maven repository.

ixin-java-mp.1.1.2.source-code.TestNonAtomicLongAssignment Maven / Gradle / Ivy

/**
 * 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();
  }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy