麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

同步和異步的概念

2019-11-14 09:09:19
字體:
來源:轉載
供稿:網友

一,同步

 通俗的來講就是,比如上公交車,同步就相當于排隊上車,大家都是有順序的,只有等前一個人上了公交車以后,下一個才能上車。

如果不使用同步的話,會造成如下圖所示的狀況:

這是沒有使用同步的代碼:
public class ThreadDemo {		/**	 * 打印名字	 * @param name	 */	public void showName(String name){		for(int i=0;i<name.length();i++){			System.out.PRint(name.charAt(i));		}		System.out.println();	}	public static void main(String[] args){			 ThreadDemo t=new ThreadDemo();				new Thread(){			@Override			public void run() {				while(true){					t.showName("鋼鐵俠");				}			}		}.start();				new Thread(){			public void run() {				while(true){					t.showName("美國隊長");				}			}		}.start();	}} 

為了解決類似這種情況,應該引入同步的概念,也就是給方法加鎖,當其他線程調用該方法時,如果鎖解開了才能調用,如果沒有,則不能調用。java中同步的關鍵字是synchronzied,如果方法不加鎖,則會出現意想不到的結果。使用synchronzied有兩種方法,這里我舉一個比較省事的方法
public class ThreadDemo {		/**	 * 打印名字	 * @param name	 */	public synchronized void showName(String name){		for(int i=0;i<name.length();i++){			System.out.print(name.charAt(i));		}		System.out.println();	}	public static void main(String[] args){			 ThreadDemo t=new ThreadDemo();				new Thread(){			@Override			public void run() {				while(true){					t.showName("鋼鐵俠");				}			}		}.start();				new Thread(){			public void run() {				while(true){					t.showName("美國隊長");				}			}		}.start();	}}TipS:在JDK1.5及以后,在Java.util.concurrent.locks包下面提供了Lock接口,Lock實現提供了比使用synchronized方法和語句可獲得更廣泛的鎖定操作,此實現允許更靈活的結構,可以具有差別很大的屬性。舉個模仿火車票買票系統:假設某一站只有100張火車票,有200個人分別在不同的窗口買票,200人相當于兩百個線程,為了出現有人結賬是被告知票已經賣完的情況,買票的方法需要加上鎖。
import java.util.Random;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;public class TicketDemo {		private int Ticketcount=100;	private static int people=200;	private Lock lock = new ReentrantLock();	private static TicketDemo td=new TicketDemo();	public static void main(String[] args) {		for (int i = 0; i < people; i++) {			new Thread(){				@Override				public void run() {					super.run();					td.Buy();				}			}.start();		}	}	public void Buy(){		//上鎖		lock.lock();		try {			if(Ticketcount == 0){				System.out.println("已賣完");				return;			}		Random r = new Random();		try {			Thread.sleep(r.nextInt(1000));		} catch (InterruptedException e) {			// TODO Auto-generated catch block			e.printStackTrace();		}		System.out.println("Ticketcount = "+Ticketcount);		System.out.println("還剩下:"+(--Ticketcount)+"張票");		} 		finally {			//解鎖			lock.unlock();		}	}}

二,異步

還拿公交車來講,異步就是大家一起上公交車,因為沒有秩序,也就是說上公交車不收限制。

總結:同步其實并不是同時.同步簡單說即使有順序,異步呢,是無序,所以可以同時發生。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产激情视频在线 | 国产一级毛片不卡 | 亚洲第一页中文字幕 | 手机视频在线播放 | 私库av在线免费观看 | 久久久久久久久国产精品 | 91色综合综合热五月激情 | 久久久日韩av免费观看下载 | 日韩精品羞羞答答 | 黄视频网站免费 | 91精品国产综合久久婷婷香 | 一级毛片免费观看在线 | www.99热精品 | 国产一国产一级毛片视频在线 | 无遮挡一级毛片视频 | 国产青草网 | 播色网 | 日日做夜夜操 | 国产成人精品免高潮在线观看 | 久久精品视频免费 | 成人福利视频在线观看 | 国产91久久久 | 91成人免费看 | 成人三级电影网址 | 最新黄色电影网站 | 欧美成人一区二区三区 | 一级做受毛片免费大片 | 羞羞答答视频 | 久久99精品久久久久久秒播蜜臀 | 国产一国产精品一级毛片 | china对白普通话xxxx | 亚洲成人入口 | 三级国产三级在线 | 久久我不卡| 日本在线视频一区二区三区 | 久草在线播放视频 | 久久伊人国产精品 | 日本黄色免费片 | 一级毛片电影网 | 国产精品久久久久久久久久久天堂 | 高清国产午夜精品久久久久久 |