Java 实验三 多线程与输入输出处理 分别通过Thread和Runnable创建线程。

一、实验内容:

1.分别通过Thread和Runnable创建线程。
(1). 自定义一个类Demo,使其继承Thread类
1)在Demo类中重写run()方法,在方法编写一个for循环(循环10次),循环体内打印:当前线程名称:+当前循环次数。
2)编写测试类Test1,在Test1类的main()方法中,创建2个线程对象,分别命名为“蜘蛛侠”和“钢铁侠”,并执行线程对象的start()方法。
(2). 自定义一个类Demo,使其实现Runnable接口。
1)在Demo类中覆写run()方法,在方法编写一个for循环(循环10次),循环体内打印:当前线程名称:+当前循环次数。
2) 编写测试类Test2,在Test2类的main()方法中,创建一个Demo对象,利用Thread(Runnable target)构造方法创建2个线程对象,分别命名为“蜘蛛侠”和“钢铁侠”,并执行线程对象的start()方法。
2.编写一个HelloWorld.java,选择合适的输入输出流将源程序文件复制一份到“Test.txt”文件中、并同时将文件的内容打印到命令提示符窗口中。

二、实验代码:

实验三(一):

package 实验三;
//202056228杨丽花


/*
 * 1.分别通过Thread和Runnable创建线程。
(1).	自定义一个类Demo,使其继承Thread类。
1)在Demo类中重写run()方法,在方法编写一个for循环(循环10次),循环体内打印:当前线程名称:+当前循环次数。
2)编写测试类Test1,在Test1类的main()方法中,创建2个线程对象,分别命名为“蜘蛛侠”和“钢铁侠”,并执行线程对象的start()方法。
*/
//定义一个Demo类(继承)

class Demo extends Thread{
	 
	public Demo(String string) {
		// TODO Auto-generated constructor stub
		super(string);
	}
	 
 
	public void run() {
		for(int i=1;i<=10;i++) {
			Thread th=Thread.currentThread();//获取当前线程
			String th_name=th.getName();//获取当前线程的名称
			System.out.println("“"+th_name+"”"+" 线程正在执行,当前循环的次数为:第"+i+"次!");
		}
	}
}

public class Test3 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
        //测试一:
		System.out.println("下面进行测试一:");
		new Demo("蜘蛛侠").start();//创建线程对象
		new Demo("钢铁侠").start();//创建线程对象
		
		
	}

}

实验三(二):

package 实验三;

//202056228杨丽花

/*(2).	自定义一个类Demo,使其实现Runnable接口。
1)在Demo类中覆写run()方法,在方法编写一个for循环(循环10次),循环体内打印:当前线程名称:+当前循环次数。
2) 编写测试类Test2,在Test2类的main()方法中,创建一个Demo对象,利用Thread(Runnable target)构造方法创建2个线程对象,分别命名为“蜘蛛侠”和“钢铁侠”,并执行线程对象的start()方法。
*/
//定义一个Demo1类(实现接口)
class Demo1 implements Runnable{
	public Demo1() {
		// TODO Auto-generated constructor stub
		
	}
	 
	public void run() {
		for(int i=1;i<=10;i++) {
			if(i==3) {
				try {
					Thread.sleep(100);//当前线程休眠2000毫秒
				} catch(InterruptedException e) {
					e.printStackTrace();
				}
			}
			Thread th=Thread.currentThread();//获取当前线程
			String th_name=th.getName();//获取当前线程的名称
			System.out.println("“"+th_name+"”"+" 线程正在执行,当前循环的次数为:第"+i+"次!");
			try {
				Thread.sleep(50);//当前线程休眠500毫秒
			} catch(InterruptedException e) {
				e.printStackTrace();
			}
		}
	}
}
public class Test3_2 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		 //测试二:
		System.out.println("下面进行测试二:");
		Demo1 demo1=new Demo1();
		new Thread(demo1,"蜘蛛侠").start();
		new Thread(demo1,"钢铁侠").start();
	}

}

实验三(三):

package 实验三;

//202056228杨丽花
import java.io.*;
/* 2.编写一个HelloWorld.java,选择合适的输入输出流将源程序文件
* 复制一份到“Test.txt”文件中、并同时将文件的内容打印到命令提示符窗口中。   */

public class HelloWorld {

	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		try {
			InputStream in=new FileInputStream("HelloWorld.txt");//读取当前目录的文件
			OutputStream out=new FileOutputStream("Test.txt");//将读取的文件写入Test.txt中
			int len;//记录每次读取的一个字节
			while((len=in.read())!=-1) {
				out.write(len);//将读取的字节写入文件
			}
			in.close();
			out.close();
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}

}

三、运行结果:

运行结果:
结果一:
在这里插入图片描述

结果二:
在这里插入图片描述

结果三:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

华不在意

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值