C#轉Java之路之一:線程

Java實現多線程方式有如下兩種:java

public class HelloWordThread implements Runnable{
	public void run(){
		System.out.println("HelloWordThread.run()");
		System.out.println("threadName:"+Thread.currentThread().getName());
		System.out.println("threadState:"+Thread.currentThread().getState());
	}
}

public class CounterThread extends Thread {
	@Override
	public void run(){
                System.out.println("threadName:"+Thread.currentThread().getName());
		System.out.println("threadState:"+Thread.currentThread().getState());
	}
}
            

 線程併發保證數據一致性的關鍵字:synchronized多線程

能夠加在對象的方法上:併發

public class Counter {

	private int counter=0;
	public synchronized void incr() {
		this.counter++;
	}
	public synchronized int get() {
		return this.counter;
	}
}

 或者ide

public class Counter {
	private int counter=0;
	public void incr() {
		synchronized(this){
			this.counter++;
		}
	}
	public int get() {
		synchronized(this){
			return this.counter;
		}
	}
}

切記 synchronized同步的對象是當前對象。this

保證同步的同時,就會有資源消耗,java提供了一個輕量級的關鍵字:volatile線程

PS:其餘對線程對象的實現方法:start、sleep、join等與C#基本一致。對象

關於interrupt方法:blog

一、此方法不會中斷線程,只是一個協調機制。設置一個線程中斷標誌位。具體何時中斷,線程會參考這個標誌位。資源

因此當不知道線程在作什麼事時,不能貿然調用此方法。get

相關文章
相關標籤/搜索