19.拷贝一个目录(文件)到指定路径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 blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}20.用JAVA中的多线程示例银行取款问题packagecom.softeem.demo;class Account {privatefloatbalance = 1000;publicfloat getBalance() {returnbalance;}publicvoid setBalance(float balance) {this.balance = balance;}publicsynchronizedvoid withdrawals(float money){if(balance>=money){System.out.println("被取走"+money+"元!");try {Thread.sleep(1000);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}balance-=money;}else{System.out.println("对不起,余额不足!");}}}class TestAccount1 extends Thread {private Account account;public TestAccount1(Account account) {this.account = account;}@Overridepublicvoid run() {account.withdrawals(800);System.out.println("余额为:"+account.getBalance()+"元!");} }class TestAccount2 extends Thread {private Account account;public TestAccount2(Account account) {this.account = account;}@Overridepublicvoid 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;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 blocke.printStackTrace();}}notify();products[index]=product;index++;}publicsynchronized String pop(){if(index==0){try {wait();} catch (InterruptedException e) {// TODO Auto-generated catch blocke.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();}}
