设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。

Thread类

public Thread() 创建线程对象

public Thread(Runnable target)//target 称为被创建线程的目标对象,负责实现Runnable接口

Thread类有三个有关线程优先级的静态常量:MIN_PRIORITY,MAX_PRIORITY,NORM_PRIORITY

新建线程将继承创建它的副相承的优先级,用户可以调用Thread类的setPriority(int a)来修改

a的取值: Thread.MIN_PRIORITY,Thread.MAX_PRIORITY,Thread.NORM_PRIORITY

主要方法

启动线程 void start()

定义线程操作 void run()

使线程休眠 static void sleep()

sleep(int millsecond) 以毫秒为单位的休眠时间

sleep(int millsecond,int nanosecond) 以纳秒为单位的休眠时间

currentThread() 判断谁在占用CPU的线程

final String getName()    获取线程名

final int getPriority()       获取线程优先级

final void setPriority(int level)   设置线程优先级

final boolean isAlive()      确定线程是否运行

final   void join()              等待线程终止

以下程序使用内部类实现线程,对j增减的时候没有考虑顺序问题。

package test;

public class ThreadTest1 {
  private int j;

  public static void main(String args[]) {
    ThreadTest1 tt = new ThreadTest1();
    Inc inc = tt.new Inc();
    Dec dec = tt.new Dec();
    for (int i = 0; i < 2; i++) {
      Thread t = new Thread(inc);
      t.start();
      t = new Thread(dec);
      t.start();
    }
  }

  private synchronized void inc() {
    j++;
    System.out.println(Thread.currentThread().getName() + "-inc:" + j);
  }

  private synchronized void dec() {
    j--;
    System.out.println(Thread.currentThread().getName() + "-dec:" + j);
  }

  class Inc implements Runnable {
    public void run() {
      for (int i = 0; i < 100; i++) {
        inc();
      }
    }
  }

  class Dec implements Runnable {
    public void run() {
      for (int i = 0; i < 100; i++) {
        dec();
      }
    }
  }
}


你可能感兴趣的:(设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。)