编程练习(14)
来源:互联网 发布:json测试数据 编辑:程序博客网 时间:2024/05/22 11:47
[1].在控制台中实现倒计时效果。
package test1;import java.io.IOException;import java.text.SimpleDateFormat;import java.util.Date;import java.util.TimerTask;public class MyTimer extends TimerTask{ @Override public void run() { try { Date now1=new Date(); SimpleDateFormat p=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String str1=p.format(now1); System.out.println("开始时间:"+str1); Process process= Runtime.getRuntime().exec( "F:\\liebao\\liebao.exe"); Thread.sleep(10000);//间隔10s Date now2=new Date(); String str2=p.format(now2); process.destroy();//结束程序 System.out.println("结束时间:"+str2); } catch (Exception e) { e.printStackTrace(); } } }
package test1;/** * 使用java.util.Timer实现计时器 */import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;import java.util.Scanner;import java.util.Timer;/** * 创建一个计时器,定在"2017-11-30 11:26:40",打开浏览器程序 * @author Administrator * */public class TestTimer { public static void main(String[] args) { Timer t=new Timer(); t.schedule(new MyTimer(),10); }}
运行结果(随机):
开始时间:2017-12-03 11:13:14
结束时间:2017-12-03 11:13:24
[2].写一段程序模仿售票窗口的售票情景(保证每个窗口售票不会出现重复)
package test2;public class Sale extends Thread { private static int count=10;//假设有10张票 public void run(){ while(count>2) synchronized(this){ System.out.println(Thread.currentThread().getName()+(count--)); //当一个线程访问count对象的时候,其他试图访问count对象的线程将会阻塞,直到该线程访问count对象结束 } }}
package test2;import java.util.Scanner;public class BeginSale { public static void main(String[] args) { Sale t=new Sale(); new Thread(t,"A").start(); new Thread(t,"B").start(); new Thread(t,"C").start(); }}
运行结果(随机):
A10
A9
A8
A7
A6
A5
A4
A3
C2
B1
[3].写一段程序模仿存款取款功能,注意不可以出现边存款边取款的现象
package test;import java.util.Scanner;public class Work { public static double account=10000;//假设账户目前有10000 public synchronized void Cun(){ /* try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); }*/ System.out.println("请输入你要存的钱:"); double x=new Scanner(System.in).nextDouble(); this.account=account+x; System.out.println("目前您的账户余额为:"+account); } public synchronized void Qu(){ System.out.println("请输入你要取的钱:"); double y=new Scanner(System.in).nextDouble(); if(account>=y){ this.account=account-y; System.out.println("目前您的账户余额为"+account); } else System.out.println("余额不足"); }}
package test;import java.util.Scanner;public class Mytest { public static void main(String[] args) { final Work p=new Work();//此处final最好加上 Thread t1=new Thread(){ public void run(){ p.Cun(); } }; Thread t2=new Thread(){ public void run(){ p.Qu(); } }; t2.start(); t1.start(); }}
运行结果(随机):
请输入你要取的钱:
2000
您的账户余额为8000.0
请输入你要存的钱:
100
您的账户余额为:8100.0
[4].写一段程序实现生产者-消费者功能,生产一个消费一个
package test1;public class Work { public static int va=0; public static void main(String[] args) { final Object lock=new Object(); Thread t1=new Thread(){ public void run(){ for(int i=0;i<10;i++){ synchronized (lock){ try {//生产 if(va<=0){ va++; System.out.println(va); lock.notifyAll();//唤醒等待池中的消费者 lock.wait();//生产完后进入等待,让出资源 } } catch (Exception e) { e.printStackTrace(); } } } } }; Thread t2=new Thread(){ public void run(){ for(int i=0;i<10;i++){ synchronized (lock) { try {//消费 if(va>0){ va--; System.out.println(va); lock.notify();//消费完后,唤醒等待池中的生产者 lock.wait();//进入等待让出资源 }else{ System.out.println("产品不足,请生产!"); lock.notify();//产品不足通知生产者生产 lock.wait();//让出资源,进入等待 } } catch (Exception e) { e.printStackTrace(); } } } } }; t1.start(); t2.start(); }}
阅读全文
0 0
- 编程练习(14)
- C++基础编程练习14
- 编程练习
- 编程练习
- 编程练习
- 编程练习
- 编程练习
- 编程练习
- 编程练习
- 编程练习
- 编程练习
- 编程练习
- 编程练习
- 编程练习
- 编程练习
- 编程练习
- 编程练习
- 编程练习
- 冷水泡茶渐渐浓
- 九州海上牧云记,电视剧节奏太慢?教你如何看全集
- 前端框架天下三分:Angular React 和 Vue的比较
- C#程序集学习总结
- 丑数
- 编程练习(14)
- python3.5 centos6.6安装
- Redis —— 在ubuntu下的安装教程
- Mysql根据条件批量更新动态数据
- 1341三角形
- C3P0连接池报错:java.lang.NullPointerException 空指针异常
- Python---numpy的初步认识
- C++之 “虚函数” 详解
- 图像旋转公式