Source Code : Thread Priority

Java Is Open Source Programming Language You Can Download From Java and Java Libraries From http://www.oracle.com. Click Here to download
We provide this code related to title for you to solve your developing problem easily. Libraries which is import in this program you can download from http://www.oracle.com. Click Here or search from google with Libraries Name you get jar file related it

Thread Priority

Thread Priority
 

public class PriorityCompete extends Object {
  private volatile int count;

  private boolean yield;

  private Thread internalThread;

  private volatile boolean noStopRequested;

  public PriorityCompete(String name, int priority, boolean yield) {

    count = 0;
    this.yield = yield;

    noStopRequested = true;
    Runnable r = new Runnable() {
      public void run() {
        try {
          runWork();
        } catch (Exception x) {
          x.printStackTrace();
        }
      }
    };

    internalThread = new Thread(r, name);
    internalThread.setPriority(priority);
  }

  private void runWork() {
    Thread.yield();

    while (noStopRequested) {
      if (yield) {
        Thread.yield();
      }

      count++;

      for (int i = 0; i < 1000; i++) {
        double x = i * Math.PI / Math.E;
      }
    }
  }

  public void startRequest() {
    internalThread.start();
  }

  public void stopRequest() {
    noStopRequested = false;
  }

  public int getCount() {
    return count;
  }

  public String getNameAndPriority() {
    return internalThread.getName() + ": priority="
        + internalThread.getPriority();
  }

  private static void runSet(boolean yield) {
    PriorityCompete[] pc = new PriorityCompete[3];
    pc[0] = new PriorityCompete("P0", 3, yield);
    pc[1] = new PriorityCompete("P1", 6, yield);
    pc[2] = new PriorityCompete("P2", 6, yield);

    try {
      Thread.sleep(1000);
    } catch (InterruptedException x) {
    }

    for (int i = 0; i < pc.length; i++) {
      pc[i].startRequest();
    }

    long startTime = System.currentTimeMillis();
    try {
      Thread.sleep(10000);
    } catch (InterruptedException x) {
    }

    for (int i = 0; i < pc.length; i++) {
      pc[i].stopRequest();
    }

    long stopTime = System.currentTimeMillis();

    try {
      Thread.sleep(1000);
    } catch (InterruptedException x) {
    }

    int totalCount = 0;
    for (int i = 0; i < pc.length; i++) {
      totalCount += pc[i].getCount();
    }

    System.out.println("totalCount=" + totalCount + ", count/ms="
        + roundTo(((double) totalCount) / (stopTime - startTime), 3));

    for (int i = 0; i < pc.length; i++) {
      double perc = roundTo(100.0 * pc[i].getCount() / totalCount, 2);
      System.out.println(pc[i].getNameAndPriority() + ", " + perc
          + "%, count=" + pc[i].getCount());
    }
  }

  public static double roundTo(double val, int places) {
    double factor = Math.pow(10, places);
    return ((int) ((val * factor) + 0.5)) / factor;
  }

  public static void main(String[] args) {
    Runnable r = new Runnable() {
      public void run() {
        System.out.println("Run without using yield()");
        System.out.println("=========================");
        runSet(false);

        System.out.println();
        System.out.println("Run using yield()");
        System.out.println("=================");
        runSet(true);
      }
    };

    Thread t = new Thread(r, "Priority");
    t.setPriority(Thread.MAX_PRIORITY - 1);
    t.start();
  }
}
           
         
  

Thank with us