Comparator
ThreadLocal,線程之間隔絕甚亭。 輸出: 上面代碼,在一個(gè)線程中設(shè)置 tl.set(new Person())击胜,在另一個(gè)線程中tl.get()的是null亏狰。在Threa...
示例用法: LockSupport.park() 對應(yīng)一個(gè)LockSupport.unpark(),類似于一個(gè)計(jì)數(shù) 上面這樣的話,線程就不會(huì)阻塞偶摔。
wait() 阻塞暇唾,釋放鎖 notify() 通知阻塞的那個(gè)線程到就緒狀態(tài),但不是讓出鎖給他辰斋,被喚醒的線程要運(yùn)行必須得獲得鎖策州。 示例:
今天在公司做的一個(gè)訂購成功后發(fā)送給用戶的郵件時(shí)宫仗,見到了之前別人留下來的一個(gè)問題够挂。類似于下面這樣的代碼: main函數(shù)中外部有一個(gè)persons對象,傳入test函數(shù)中藕夫,tes...
實(shí)現(xiàn)一個(gè)同步容器下硕,有2個(gè)生產(chǎn)者線程,10個(gè)消費(fèi)者線程汁胆。 這里是用了notifyAll()梭姓;會(huì)存在一個(gè)問題,比如此時(shí)容器滿了嫩码,消費(fèi)者notifyAll()誉尖,可能會(huì)被其他消費(fèi)者拿...
簡單介紹CountDownLatch的用法 上面意思是,當(dāng)其他線程執(zhí)行完到latch -> 0,主線程才會(huì)在latch.await() 繼續(xù)執(zhí)行下去铸题,不然就會(huì)等待铡恕。也可以用j...
boolean tryLock(long time, TimeUnit unit) Lock lock = new ReentrantLock();lock.tryLock(...
Copmare And Set/Swap cas(V,E,N) 丢间,cpu原語支持探熔,中間不被打斷。V - 要改的值E - 我期望的這個(gè)值是多少N - 要設(shè)置的新值 可以這...
java中的每個(gè)對象都可以作為鎖,(不要用String饮六,Integer其垄,Long),當(dāng)synchrozied 在不同位置卤橄,鎖的對象不一樣: 普通同步方法绿满,鎖是當(dāng)前實(shí)例對象 靜...
Thread.sleep(500);當(dāng)前線程在cpu中睡個(gè)500ms,讓給別的線程去運(yùn)行窟扑。sleep完回到就緒狀態(tài) Thread.yield();讓出cpu一會(huì)喇颁,返回就緒狀態(tài)...
聚簇索引:數(shù)據(jù)和文件放在一起:InnoDB.frm:存放的是表結(jié)構(gòu),.ibd:存放的是數(shù)據(jù)文件和索引文件茎毁。 非聚簇索引:數(shù)據(jù)和索引單獨(dú)一個(gè)文件:MyISAM.frm:存放的是...