日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java知识点26——模拟12306买票过程、模拟龟兔赛跑的过程、静态代理例子

發布時間:2025/4/16 java 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java知识点26——模拟12306买票过程、模拟龟兔赛跑的过程、静态代理例子 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

模擬12306買票過程

共享資源,并發(線程安全)??

Web12306.java

/*** 共享資源,并發(線程安全)* @author Administrator**/ public class Web12306 implements Runnable{//票數private int ticketNums=99;@Overridepublic void run() {while(true) {if(ticketNums<0) {break;} // try { // Thread.sleep(200); //相當于網絡延時問題。會造成數據的不準確性 // } catch (InterruptedException e) { // // TODO Auto-generated catch block // e.printStackTrace(); // }System.out.println(Thread.currentThread().getName()+"--->"+ticketNums--);}// TODO Auto-generated method stub}public static void main(String[] args) {//一份資源Web12306 web=new Web12306();System.out.println(Thread.currentThread().getName());//多個代理new Thread(web,"馬畜").start();new Thread(web,"碼農").start();new Thread(web,"碼蝗").start();} }


模擬龜兔賽跑的過程

Racer.java

/*** 模擬龜兔賽跑* @author Administrator**/ public class Racer implements Runnable{private String winner; //勝利者@Overridepublic void run() {for(int steps=1;steps<=100;steps++) {//模擬兔子休息if(Thread.currentThread().getName().equals("rabbit")&&steps%10==0) {try {Thread.sleep(10);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}System.out.println(Thread.currentThread().getName()+"--->"+steps);//比賽是否結束boolean flag=gameOver(steps);if(flag) {break;}}}private boolean gameOver(int steps) {if(winner!=null) {//存在勝利者return true;}else {if(steps==100) {winner=Thread.currentThread().getName();System.out.println("winner==>"+winner);return true;}}return false;}public static void main(String[] args) {Racer racer=new Racer();new Thread(racer,"tortoise").start();new Thread(racer,"rabbit").start();} }

小結:?兩種線程創建方式的比較

繼承Thread類方式的多線程
? ?? 優勢:編寫簡單
? ?? 劣勢:無法繼承其它父類

?實現Runnable接口方式的多線程
? ?? 優勢:可以繼承其它類,多線程可共享同一個Runnable對象
? ? 劣勢:編程方式稍微復雜,如果需要訪問當前線程,需要調用Thread.currentThread()方法


靜態代理例子

StaticProxy.java

/*** 靜態代理* 公共接口:* 1.真實角色* 2.代理角色* @author Administrator**/ public class StaticProxy {public static void main(String[] args) {new WeddingCompany(new You()).happyMarry();// new Thread(線程對象).start();}} interface Marry{void happyMarry(); } //真實角色 class You implements Marry{@Overridepublic void happyMarry() {System.out.println("you and 嫦娥終于奔月啦……");} } //代理角色 class WeddingCompany implements Marry{//真實角色private Marry target;public WeddingCompany(Marry target) {this.target=target;}@Overridepublic void happyMarry() {ready();this.target.happyMarry();after();}private void ready() {System.out.println("布置豬窩。。。。。");}private void after() {System.out.println("鬧玉兔。。。。。。");} }

?

總結

以上是生活随笔為你收集整理的Java知识点26——模拟12306买票过程、模拟龟兔赛跑的过程、静态代理例子的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。