java经典题目---2(转贴)
来源:互联网 发布:怎么网络监听 编辑:程序博客网 时间:2024/06/05 07:31
转自:http://topic.csdn.net/u/20080617/15/706679c5-e108-4ec0-801b-75728ad19fe6.html
18.做一个单子模式的类,只加载一次属性文件 package com.softeem.demo; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.util.Properties; /** *@authorleno *单子模式,保证在整个应用期间只加载一次配置属性文件 */ publicclass Singleton { privatestatic Singleton instance; privatestaticfinal String CONFIG_FILE_PATH = "E://config.properties"; private Properties config; private Singleton() { config = new Properties(); InputStream is; try { is = new FileInputStream(CONFIG_FILE_PATH); config.load(is); is.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } publicstatic Singleton getInstance() { if(instance==null) { instance = new Singleton(); } returninstance; } public Properties getConfig() { returnconfig; } publicvoid setConfig(Properties config) { this.config = config; } } l J2SE 19.拷贝一个目录(文件)到指定路径 /** *拷贝一个目录或者文件到指定路径下 *@paramsource *@paramtarget */ publicvoid copy(File source,File target) { File tarpath = new File(target,source.getName()); if(source.isDirectory()) { tarpath.mkdir(); File[] dir = source.listFiles(); for (int i = 0; i < dir.length; i++) { copy(dir[i],tarpath); } }else { try { InputStream is = new FileInputStream(source); OutputStream os = new FileOutputStream(tarpath); byte[] buf = newbyte[1024]; int len = 0; while((len = is.read(buf))!=-1) { os.write(buf,0,len); } is.close(); os.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } 20.用JAVA中的多线程示例银行取款问题 packagecom.softeem.demo; /** *@authorleno *账户类 *默认有余额,可以取款 */ class Account { privatefloatbalance = 1000; publicfloat getBalance() { returnbalance; } publicvoid setBalance(float balance) { this.balance = balance; } /** *取款的方法需要同步 *@parammoney */ publicsynchronizedvoid withdrawals(float money) { if(balance>=money) { System.out.println("被取走"+money+"元!"); try { Thread.sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } balance-=money; } else { System.out.println("对不起,余额不足!"); } } } /** *@authorleno *银行卡 */ class TestAccount1 extends Thread { private Account account; public TestAccount1(Account account) { this.account = account; } @Override publicvoid run() { account.withdrawals(800); System.out.println("余额为:"+account.getBalance()+"元!"); } } /** *@authorleno *存折 */ class TestAccount2 extends Thread { private Account account; public TestAccount2(Account account) { this.account = account; } @Override publicvoid run() { account.withdrawals(700); System.out.println("余额为:"+account.getBalance()+"元!"); } } publicclass Test { publicstaticvoid main(String[] args) { Account account = new Account(); TestAccount1 testAccount1 = new TestAccount1(account); testAccount1.start(); TestAccount2 testAccount2 = new TestAccount2(account); testAccount2.start(); } } 21.用JAVA中的多线程示例火车站售票问题 package com.softeem.demo; /** *@authorleno *售票类 */ class SaleTicket implements Runnable { inttickets = 100; publicvoid run() { while (tickets > 0) { sale(); //或者下面这样实现 // synchronized (this) { // if (tickets > 0) { // System.out.println(Thread.currentThread().getName() + "卖第" // + (100 - tickets + 1) + "张票"); // tickets--; // } // } } } publicsynchronizedvoid sale() { if (tickets > 0) { System.out.println(Thread.currentThread().getName() + "卖第" + (100 - tickets + 1) + "张票"); tickets--; } } } publicclass TestSaleTicket { publicstaticvoid main(String[] args) { SaleTicket st = new SaleTicket(); new Thread(st, "一号窗口").start(); new Thread(st, "二号窗口").start(); new Thread(st, "三号窗口").start(); new Thread(st, "四号窗口").start(); } } 22.用JAVA中的多线程示例生产者和消费者问题 package com.softeem.demo; class Producer implements Runnable { private SyncStack stack; public Producer(SyncStack stack) { this.stack = stack; } publicvoid run() { for (int i = 0; i < stack.getProducts().length; i++) { String product = "产品"+i; stack.push(product); System.out.println("生产了: "+product); try { Thread.sleep(200); } catch(InterruptedException e) { e.printStackTrace(); } } } } class Consumer implements Runnable { private SyncStack stack; public Consumer(SyncStack stack) { this.stack = stack; } publicvoid run() { for(int i=0;i <stack.getProducts().length;i++) { String product =stack.pop(); System.out.println("消费了: "+product); try { Thread.sleep(1000); } catch(InterruptedException e) { e.printStackTrace(); } } } } class SyncStack { private String[] products = new String[10]; privateintindex; publicsynchronizedvoid push(String product) { if(index==product.length()) { try { wait(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } notify(); products[index]=product; index++; } publicsynchronized String pop() { if(index==0) { try { wait(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } notify(); index--; String product = products[index]; return product; } public String[] getProducts() { returnproducts; } } publicclass TestProducerConsumer { publicstaticvoid main(String[] args) { SyncStack stack=new SyncStack(); Producer p=new Producer(stack); Consumer c=new Consumer(stack); new Thread(p).start(); new Thread(c).start(); } }
- java经典题目---2(转贴)
- JAVA经典题目2
- java经典题目2
- java经典题目-2
- java经典题目2
- java经典题目---1(转贴)
- java经典题目---3(转贴)
- java经典面试题目
- java经典面试题目
- JAVA经典题目
- Java面试经典题目
- JAVA经典面试题目
- java经典题目
- java经典题目
- JAVA经典题目1
- JAVA经典题目3
- java经典题目3
- Java经典题目
- Oracle中间件及SOA产品线战略分析
- [OpenCV] cvGetSubRect的使用
- SOA治理注意事项
- java经典题目---1(转贴)
- ajaxLoginCtrl4StudyezCom
- java经典题目---2(转贴)
- 搜索框的实现JS
- java经典题目---3(转贴)
- SOA治理最佳策略:小幅起步循序渐进
- SQL Server 不允许进行远程连接__错误
- 解决 WIN2003+IIS6.0 : HTTP 错误 401.1 - 未经授权:访问由于凭据无效被拒绝
- C++
- 心态好才是真的好
- JSP的注释问题