`
wataxi
  • 浏览: 208090 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

java经典题目(二)

    博客分类:
  • java
阅读更多

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 block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.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 block
e.printStackTrace();
}
balance-=money;
}
else
{
System.out.println("对不起,余额不足!");
}
}

}


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()+"元!");
}
}

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;


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经典题目.pdf

    根据提供的文件信息,我们可以归纳和展开以下相关的Java知识点: ### 1. Java语言的优势 Java 作为一种广泛应用的编程语言,具备以下显著优势: - **免费且开源**:Java 是一个开放源代码的软件,任何人都可以...

    java经典题目算法.pdf

    java经典题目算法

    java竞赛经典题目集锦

    ### Java竞赛经典题目集锦知识点解析 #### 一、Java基础知识——链表操作 ##### 题目背景与目标 本题目旨在通过实际操作来帮助读者深入理解Java中链表的基本概念及其应用。通过创建一个包含三个节点的简单链表,...

    万年历 初级java经典题目

    import java.util.Scanner; public class WNL{ public static void main(String[] args) { System.out.println("***********欢迎使用万年历**********"); Scanner input = new Scanner(System.in); System....

    java经典题目加其他

    "java经典题目加其他"这个压缩包包含了一些对Java开发者极其有价值的学习资料。以下是对这些文档内容的详细解读: 1. **java经典题目.doc**: 这份文档很可能是集合了Java编程中的经典问题和面试题,旨在帮助...

    Java经典题目_新手笔试使用

    以下是一些关于Java的详细知识点,主要基于给定的面试题目。 1. **Java的优势**:Java的优势包括免费开源、跨平台(Java虚拟机JVM使得Java代码能在不同操作系统上运行)、简单易学、功能全面、面向对象、健壮性强、...

    java经典的题目下载

    【Java经典题目下载】这篇描述涉及的是一个针对Java初学者的实训课程安排和相关知识点,旨在帮助学生巩固已有的知识并学习新的技能。实训过程包括了一系列的实验步骤和要求。 首先,实训的时间安排是周一至周五上午...

    java经典题目100例

    这些Java经典题目涵盖了基本的输入输出、条件判断、循环控制等核心概念,对于初学者来说是很好的练习材料,能够帮助他们理解和掌握Java编程的基本技巧。通过解决这些题目,开发者可以提升逻辑思维能力和代码组织能力...

    分享java经典题目

    ### Java经典题目解析 #### 知识点一:最大公约数算法 在Java学习过程中,掌握基础算法是非常重要的。其中一个常见的题目就是计算两个整数的最大公约数(Greatest Common Divisor, GCD)。本题通过一个名为`...

    Java经典笔试题目

    这份“Java经典笔试题目”文档无疑为准备Java面试的开发者提供了宝贵的参考资料。 1. **基础语法**:Java的基础语法包括变量声明、数据类型、运算符、流程控制(如if、for、while、switch)、方法定义与调用等。在...

    Java面试经典题目

    ### Java面试经典题目详解 #### 一、Java基础问答深入解析 1. **哪些类可以被继承?** 在给出的示例中,`java.lang.Thread`和`java.lang.ClassLoader`是可以被继承的,而`java.lang.Double`, `java.lang.Math`, `...

    java经典题目算法大全[整理版].doc

    java经典题目算法大全[整理版].doc

    Java经典例题代码

    "Java经典例题代码"这个主题旨在通过实例帮助开发者深入理解Java的核心概念和最佳实践。以下是一些关键知识点的详细说明: 1. **基础语法**:Java的基础包括变量声明、数据类型(如整型、浮点型、字符型、布尔型)...

    经典的Java面试题目

    Java是一种广泛使用的面向对象的编程语言...这些经典Java面试题涵盖了Java的基础概念、语法和编程规范,是评估应聘者Java基础知识的重要手段。掌握这些知识不仅能帮助应对面试,也是成为一名合格的Java开发者所必需的。

    Java 小项目 经典题目

    "Java 小项目 经典题目"集合提供了一系列针对性的练习,旨在帮助学习者巩固基础,提高实际编程能力。下面,我们将深入探讨这些经典项目的知识点以及它们在Java学习路径中的重要性。 1. **控制台应用开发**:许多...

    java 经典题目 附简单的解答

    在Java编程语言中,经典题目往往涵盖了许多核心概念和关键知识点。以下是一些Java语言的重点知识,包括它的优势、面向对象编程的术语、常用的包、标识符的规则、关键字的特点、数据类型的分类、运算符的种类、super...

    java面试经典题目

    Java面试经典题目是每个Java开发者在求职过程中都可能遇到的挑战。这些题目涵盖了语言基础、数据结构、算法、多线程、JVM、设计模式、框架、数据库等多个方面,旨在全面评估候选人的技术实力和问题解决能力。以下是...

Global site tag (gtag.js) - Google Analytics