编程练习:
1、通过实现Runnable接口的方式创建线程类Cat和Dog,run()方法实现的功能为:加入一个循环长度为3的for循环,分别循环输出信息“A cat”和“A dog”。
2、在测试类中分别创建Cat和Dog类的对象,启动两个线程。
3、在测试类中创建一个循环长度为3的for循环,打印输出信息“main thread”。
测试类
public class Test {
?? ?public static void main(String[] args) {
?? ??? ?// TODO 自动生成的方法存根
?? ??? ?for(int i=0;i<3;i++) {
?? ??? ??? ?System.out.println("main thread");
?? ??? ?}
?? ??? ?Cat one=new Cat();
?? ??? ?Dog two=new Dog();
?? ??? ?Thread t1=new Thread(one);
?? ??? ?Thread t2=new Thread(two);
?? ??? ?t1.start();
?? ??? ?t2.start();
//?? ??? ?new Thread(t1).start();
//?? ??? ?new Thread(t2).start();
?? ?}
}
Cat类
class Cat implements Runnable {
public void run() {
for (int i=0;i<3; i++) {
System.out.println(Thread.currentThread().getName() + "A cat");
}
}
}
Dog类
class Dog implements Runnable {
public void run() {
for (int i=0;i<3; i++) {
System.out.println(Thread.currentThread().getName() + "A dog");
}
}
}
?
2.(单选题)?
?用Runnable接口创建线程的主要工作如下,它们正确的先后顺序为()
? ? ?(1) 通过实现类的对象创建线程类的对象
? ? ?(2) 声明实现Runnable接口的类
? ? ?(3) 调用start()方法启动线程
? ? ?(4) 创建实现类的对象
? ? ?(5) 在实现类内实现run()方法?
? ? ? ? ? ?正确答案: C? ? ? 我的答案: C
- A.?
1-4-2-5-3 - B.?
2-1-4-5-3 - C.?
2-5-4-1-3 - D.?
1-5-2-4-3
线程
//process(进程)可以同时运行多个程序块,达到多任务处理的目的? ? ?? //同时激活多个线程 /*使一个类可激活线程,使用以下语法表示: ?* class 类名称 extends Thread ? //从Thread类扩展出子类 ?* { ?* ? ? ?属性 ?* ? ? ?方法 ?* ? ? ?修饰符 run(){ ? ? ? ? ? ?//覆盖Thread类里的run()方法 ?* ? ? ? ? ?以线程处理的程序 ?*/
3.编程练习:
通过继承Thread类的方式创建线程,并在线程体中通过循环打印输出如演示效果所示的内容。
public class Test { ? ? ? ?public static void main(String[] args) { ? ? ?? ? ? new TestThread().start();?? ? ? ? ? ? ?} } class TestThread extends Thread{ ?? ?public void run() { ?? ??? ?for(int i=1;i<=10;i++) { ?? ??? ??? ?System.out.println("打印机正在运行"+i); ?? ??? ?} ?? ?} }
?4.以下代码中,在划线处加入什么语句能成功启动线程。
?答案:one.start();
5.(多选题)?选项中,哪两句的说法是错误的?(选择两项)
正确答案:?BC? ? ? ? ? ? ? 我的答案:BC
6.(简答题)?编程练习:应用对象序列化和对象反序列化向文件写入对象,并将对象读取出来输入到控制台上。效果图:
任务要求:
1、创建Product类,并声明它的属性:id,name,categories,price
2、实现Serializable接口;
3、定义Product类构造方法;
4、在Test类里面,创建Product类的对象:iphone,ipad,macbook,iwatch
5、实例化对象输入流和对象输出流;
6、写入Product类的四个对象;
7、从文件里读取四个product类的四个对象。
?Product类:
import java.io.Serializable;
public class Product implements Serializable {
private int ID;
private String name;
private String categories;
private Double price;
public Product() {
}
public Product(int iD, String name, String categories, Double price) {
super();
ID = iD;
this.name = name;
this.categories = categories;
this.price = price;
}
public int getID() {
return ID;
}
public void setID(int iD) {
ID = iD;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getCategories() {
return categories;
}
public void setCategories(String categories) {
this.categories = categories;
}
public Double getPrice() {
return price;
}
public void setPrice(Double price) {
this.price = price;
}
public String toString() {
return "产品ID:" + ID + "\n产品名称:" + name + "\n产品属性:" + categories + "\n产品价格:" + price + "元";
}
}
ProductTest类:
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
public class ProductTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
Product iphone = new Product(123, "iphone", "telephone", 4888.0);
Product ipad = new Product(234, "ipd", "computer", 5088.0);
Product macbook = new Product(345, "macbook", "computer", 10688.0);
Product iwatch = new Product(256, "iwatch", "watch", 4799.0);
try {
FileOutputStream fos = new FileOutputStream("product.txt");
ObjectOutputStream oos = new ObjectOutputStream(fos);
FileInputStream fis = new FileInputStream("product.txt");
ObjectInputStream ois = new ObjectInputStream(fis);
oos.writeObject(iphone);
oos.writeObject(ipad);
oos.writeObject(macbook);
oos.writeObject(iwatch);
oos.flush();
System.out.println("apple系列产品信息:");
// 方式1输出产品信息
Product pro = (Product) ois.readObject();
Product pro1= (Product) ois.readObject();
Product pro2 = (Product) ois.readObject();
Product pro3 = (Product) ois.readObject();
System.out.println("apple系列产品信息");
System.out.println(pro);
System.out.println();
System.out.println(pro1);
System.out.println();
System.out.println(pro2);
System.out.println();
System.out.println(pro3);
System.out.println();
oos.close();
fos.close();
ois.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
?
?
7.(单选题)?请阅读下列程序,选择正确的语句排序后填写在横线上?(选择一项)
使得运行结果为:
I.??????oos.writeObject(doberman);
II.?????Dog dog1=(Dog)ois.readObject();
III.????oos.write(doberman);
IV.????ObjectOutputStream oos=new ObjectOutputStream(fos);
V.?????ObjectInputStream ois=new ObjectInputStream(new FileInputStream("Dog.txt"));
VI.????OutputStreamWriter oos=new OutputStreamWriter(fos);
VII.????String toString()
VIII.???String()
IX.?????public class Dog implements Serializable
X.?????public class Dog extends Serializable
正确答案:?D? ? ? ?我的答案:?D
- A.?
X?VII??IV??V???I???II - B.?
IX?VIII??VI??V??III???II - C.?
X??VIII??VI??V??III???II - D.?
IX??VII??IV???V??I???II
8.(简答题)?编程练习:利用System.in从键盘输入多行字符串,输入一行控制台输出一行,同时利用PrintWriter输出到文件一行,直到输入为“exit”,退出程序。运行效果:
import java.io.*;
import java.io.InputStream;
import java.io.PrintWriter;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class Test {
public static void main(String[] args) throws IOException{
BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter buf2 = new BufferedWriter(new FileWriter("test.txt"));
System.out.println("请输入小写英文字符串");
String str = buf.readLine();
while(!str.equals("exit")){
System.out.println(str);
// System.out.println("程序结束");
buf2.write(str);
buf2.newLine();
System.out.println();
str = buf.readLine();
}
System.out.println("程序结束");
buf.close();
buf2.close();
}
}
?
?
?
|