大資料第九天內容

來源:互聯網
上載者:User

標籤:多線程 stringbuffer stringbuilder

筆記部分:


建立線程方式

-----------------

1.Thread

2.Runnable{public void run();}


class Man extends Person implements Runnable{

public void run(){

...

}

}


new Car().start();

new Thread(new Man()).start();


eclipse

---------------

alt + ///代碼輔助

alt + 上箭頭//向上移動一行

alt + 下箭頭//向上移動一行

alt + shift + 上箭頭        //向上複製一行

alt + shift + 下箭頭        //向下複製一行

ctrl + D//刪除一行


String

-----------------

1. ==     //判斷是否是同一對象。判斷對象的記憶體位址。

2. equals     //是判斷兩個對象內容是否相同。

split(String reg);     //按照指定的字串進行拆分,傳回值數組。

substring(int start);        //取子串操作,指定起始索引之後的所有字元

substring(int start,int end);//取子串操作,指定起始索引和結束索引之間的全部字元,

     //包含起始索引,不含結尾索引。[a,b)屬於半開半閉區間。

byteByte     //封裝類

shortShort

intInteger

longLong

floatFloat

douleDouble

booleanBoolean

charCharacter

byte b = 127 ;

Byte b = new Byte(127);


StringBuffer  

字串緩衝區

StringBuffer是字串變數,它的對象是可以擴充和修改的。

append方法可以追加字串,字元,對象等


和String相比:當String方法執行Sting=String+i等情況時,實際上String對象是不可改變對象,因此不斷地在建立對象,並字串池中也不斷增加,原來對像再被回收,String執行效率低。


StringBuffer中的方法是被synchronized修飾的,是同步的,安全執行緒的,同一時間只有一個對像可以執行,鎖是執行時的當前StringBuffer對象


StringBuilder沒有被synchronized修飾的,非同步的

效能不一致,StringBuilder在每次訪問的時候不需要判斷對像鎖是否被佔用,效能更好效率更高。


作業部分:


1.蜜蜂和熊的生產消費關係,熊在蜂蜜滿10斤吃掉。蜜蜂一次生產一斤蜂蜜,且蜜蜂產生一斤蜂蜜花費的時間是10s。

十隻蜜蜂和兩隻熊。


代碼:

package com.work.ten;class Bear extends Thread{private FengMi fengmi;private String bearname;public Bear(FengMi fengmi,String  bearname){this.fengmi=fengmi;this.bearname=bearname;}public void run(){while(true){synchronized(fengmi){if (fengmi.getFengmiWeight()<10) {try {fengmi.wait();}catch (Exception e){}}else if(fengmi.getFengmiWeight()>=10&&fengmi.getFengmiWeight()%10==0){    fengmi.ChiFemgmi();System.out.println("10 斤蜂蜜被"+bearname+"吃掉,剩餘"+fengmi.getFengmiWeight()+"斤蜂蜜");try{fengmi.notifyAll();}catch(Exception e){}}}yield();}}}class FengMi {private static int fengmiWeight=0; //蜜罐中蜂蜜數量private  final int fengmiWeightMax=20; //蜜罐中蜂蜜數量上限public  int getFengmiWeight() {return fengmiWeight;}public int getFengmiWeightMax() {return fengmiWeightMax;}public void CreateFemgmi() { //生產蜂蜜this.fengmiWeight += 1;}public void ChiFemgmi() { //吃蜂蜜this.fengmiWeight -=10;}}class Bee extends Thread{private FengMi fengmi;private String  beename;public Bee(FengMi fengmi,String beename){this.fengmi=fengmi;this.beename=beename;}public void run(){int i=1;while(true){synchronized(fengmi){if(fengmi.getFengmiWeight()<fengmi.getFengmiWeightMax()){if(fengmi.getFengmiWeight()==0){try{fengmi.CreateFemgmi();System.out.println("蜂蜜採集好了,目前一共"+fengmi.getFengmiWeight()+"斤蜂蜜");fengmi.notifyAll();Thread.sleep(10);System.out.println("經過10ms,蜜蜂休息好了");}catch(Exception e){}}else {if (fengmi.getFengmiWeight()%10==0){try{fengmi.CreateFemgmi();System.out.println("蜂蜜採集好了,目前一共"+fengmi.getFengmiWeight()+"斤蜂蜜");fengmi.notifyAll();Thread.sleep(10);System.out.println("經過10ms,蜜蜂休息好了");}catch(Exception e){}}else {try{fengmi.CreateFemgmi();if(fengmi.getFengmiWeight()%10==0){System.out.println("蜂蜜採集好了,目前一共"+fengmi.getFengmiWeight()+"斤蜂蜜,熊可以來采了");}else  System.out.println("蜂蜜採集好了,目前一共"+fengmi.getFengmiWeight()+"斤蜂蜜");fengmi.notifyAll();Thread.sleep(10);System.out.println("經過10ms,蜜蜂休息好了");}catch(Exception e){}}}}else {System.out.println("蜂蜜滿了");try{fengmi.wait();}catch(Exception e){}}}i++;yield();}}}class BeeBearModel2{public static void main(String[] args){FengMi fengmi=new FengMi();Bear bear1=new Bear(fengmi,"Bear1");Bee bee1=new Bee(fengmi,"Bee1");Bee bee2=new Bee(fengmi,"Bee2");bear1.start();bee1.start();bee2.start();}}


作業1運行結果(部分):


蜂蜜採集好了,目前一共18斤蜂蜜

經過10ms,蜜蜂休息好了

蜂蜜採集好了,目前一共19斤蜂蜜

經過10ms,蜜蜂休息好了

蜂蜜採集好了,目前一共20斤蜂蜜,熊可以來采了

經過10ms,蜜蜂休息好了

10 斤蜂蜜被Bear1吃掉,剩餘10斤蜂蜜

蜂蜜採集好了,目前一共11斤蜂蜜

經過10ms,蜜蜂休息好了

蜂蜜採集好了,目前一共12斤蜂蜜

經過10ms,蜜蜂休息好了

蜂蜜採集好了,目前一共13斤蜂蜜

經過10ms,蜜蜂休息好了



作業2

取出兩個字串中最大的公用子串。

package com.work.nine;public class Find {private String checkString1;private String checkString2;public String getCheckString1() {return checkString1;}public void setCheckString1(String checkString1) {this.checkString1 = checkString1;}public String getCheckString2() {return checkString2;}public void setCheckString2(String checkString2) {this.checkString2 = checkString2;}public Find(String checkString1,String checkString2){this.checkString1=checkString1;this.checkString2=checkString2;}public String FindMaxPublicString(boolean result){if(checkString1==null||checkString2==null) return "";else{String temp=this.checkString2;if(result){temp=temp.toLowerCase();String String1Lower=this.checkString1.toLowerCase();String String2Lower=this.checkString2.toLowerCase();if(String1Lower.equals(String2Lower)) return this.checkString1;else{while(!String1Lower.contains(temp)){temp=temp.substring(0, temp.length()-1);}return temp;}} else{if(this.checkString1.equals(this.checkString2)) return this.checkString1;else{while(!this.checkString1.contains(temp)){temp=temp.substring(0, temp.length()-1);}return temp;}}}}}package com.work.nine;class MaxPublicStringDemo{public static void main(String[] args){Find find1=new Find("ABCDEFG","");Find find2=new Find("ABCDEFG","ABCDEFG");Find find3=new Find("ABCDEFG","HIGKLMN");Find find4=new Find("ABCDEFG","AB");Find find5=new Find("ABCDEFG","ab");Find find11=new Find("ABCDEFG","AABBCCD");System.out.println("最大的公用子串為"+find1.FindMaxPublicString(false));System.out.println("最大的公用子串為"+find2.FindMaxPublicString(false));System.out.println("最大的公用子串為"+find3.FindMaxPublicString(false));System.out.println("最大的公用子串為"+find4.FindMaxPublicString(false));System.out.println("最大的公用子串為"+find5.FindMaxPublicString(false));System.out.println("最大的公用子串為"+find11.FindMaxPublicString(false));System.out.println("--------------------------------------------");Find find6=new Find("ABCDEFG","");Find find7=new Find("ABCDEFG","ABCDEFG");Find find8=new Find("ABCDEFG","AACCEEG");Find find9=new Find("ABCDEFG","AB");Find find10=new Find("ABCDEFG","abcdefg");System.out.println("最大的公用子串為"+find6.FindMaxPublicString(true));System.out.println("最大的公用子串為"+find7.FindMaxPublicString(true));System.out.println("最大的公用子串為"+find8.FindMaxPublicString(true));System.out.println("最大的公用子串為"+find9.FindMaxPublicString(true));System.out.println("最大的公用子串為"+find10.FindMaxPublicString(true));}}

結果:


最大的公用子串為

最大的公用子串為ABCDEFG

最大的公用子串為

最大的公用子串為AB

最大的公用子串為

最大的公用子串為A

--------------------------------------------

最大的公用子串為

最大的公用子串為ABCDEFG

最大的公用子串為a

最大的公用子串為ab

最大的公用子串為ABCDEFG



作業3

StringBuffer是安全執行緒的,StringBuilder不是安全執行緒。單線程訪問情況下,效能是否一致?

效能不一致,StringBuilder在每次訪問的時候不需要判斷對像鎖是否被佔用,效能更好效率更高。



作業4

完成8種基本資料類封裝類的練習,完成自動拆裝箱操作。

package com.work.nine;public class chaizhuang {public static void main(String[] args){// byte類型的自動裝箱與拆箱        Byte b1 = 1;        byte b2 = b1;        System.out.println("Byte " + (b1 == b2));        // Short類型的自動裝箱與拆箱        Short s1 = 1;        short s2 = s1;        System.out.println("Short " + (s1 == s2));        // Integer類型的自動裝箱與拆箱        Integer int1 = 1;        int int2 = int1;        System.out.println("Integer " + (int1 == int2));        // Long類型的自動裝箱與拆箱        Long long1 = 1L;        long long2 = long1;        System.out.println("Long " + (long1 == long2));        // Float類型的自動裝箱與拆箱        Float f1 = 3.1415f;        float f2 = f1;        System.out.println("Float " + (f1 == f2));        // Double類型的自動裝箱與拆箱        Double d1 = 3.1415d;        double d2 = d1;        System.out.println("Double " + (d1 == d2));        // 字元類型的自動裝箱與拆箱        Character c1 = ‘a‘;        char c2 = c1;        System.out.println("Character" + (c1 == c2));        // Boolean類型的自動裝箱與拆箱        Boolean bool1 = false;        boolean bool2 = bool1;        System.out.println("Boolean " + (bool1 == bool2));}}


本文出自 “11138113” 部落格,請務必保留此出處http://11148113.blog.51cto.com/11138113/1775411

大資料第九天內容

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.