编程练习:
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
- A.
线程是比进程还要小的运行单位
- B.
Thread类位于java.thread包下
- C.
run()方法用于启动线程
- D.
CPU使用时间片轮转的工作方式,可以让多个程序轮流占用CPU,达到同时运行的效果
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();
}
}