天天看點

java多線程實作輪流列印并且共享資源

問題一:實作兩個線程對共享資源實作累加操作,并且不同的休眠時間,實作輪流列印。

public class myThread_01 {
	public static volatile double x1 = 0;

	public static void main(String[] args) {
		double x = 0;
		MyThread1 myThread1 = new MyThread1(300);
		MyThread1 myThread2 = new MyThread1(400);
		Thread t1 = new Thread(myThread1);
		Thread t2 = new Thread(myThread2);
		t1.start();
		t2.start();
	}
	
}

class MyThread1 implements Runnable {
    private long millis = 300;
	public MyThread1(long millis) {
		super();
		this.millis = millis;
	}

	@Override
	public void run() {
        try {
       		while(true){
        	    synchronized (myThread_01.class) {
        	      long before = System.currentTimeMillis();
        	      Thread.sleep(millis);
        	      long after = System.currentTimeMillis();
        	      System.out.println("消耗時間:"+String.valueOf(after-before));
        	      myThread_01.x1++;
          		  System.out.println(Thread.currentThread().getName()+"->x1:"+myThread_01.x1);
	      		  myThread_01.class.notify();
	    		  myThread_01.class.wait();
        	    }
			}
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
	}
}