java多線程示例

線程安全問題產生的原因:

1.多個線程在操作共享的數據

2. 操作共享數據的線程代碼有多條

用示例解釋如下:開啟瞭四條線程 ,同時操作共享的數據,並且有兩條操作共享數據的線程代碼

class Ticket implements Runnable//extends Thread
{
	private  int tick = 100;
	public void run()
	{
		while(true)
		{
			if(tick>0) //操作一次共享數據
			{
				System.out.println(Thread.currentThread().getName()+"....sale : "+ tick--);//第二次操作共享數據
			}
		}
	}
}

class  TicketDemo
{
	public static void main(String[] args) 
	{

		Ticket t = new Ticket();

		Thread t1 = new Thread(t);//創建瞭一個線程;
		Thread t2 = new Thread(t);//創建瞭一個線程;
		Thread t3 = new Thread(t);//創建瞭一個線程;
		Thread t4 = new Thread(t);//創建瞭一個線程;
		t1.start();
		t2.start();
		t3.start();
		t4.start();
	}
}

解決思路:

 就是將多條操作共享數據的線程代碼進行封裝,當有線程在執行這些代碼的時候,其他線程不能參與運算。必須是當前線程執行完這些代碼後,其它線程才能參與運算。 通常使用同步代碼塊或者 同步函數 。synchronized

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *