异常、线程

1.请描述异常的继承体系在这里插入图片描述
异常继承体系为:异常的根类是 java.lang.Throwable,其下有两个子类:java.lang.Error 与 java.util.Exception 。而Exception又分为编译时期异常:checked异常,与运行时期异常:runtime异常

2.请描述对错误(Error)的理解

Error:表示不可修复的恶性的错误,只能通过修改代码规避错误的产生,通常是系统级别的,所以很严重。

3.描述对异常(Expection的理解)

Exception:表示可修复的良性(相对于错误)的异常,异常产生后程序员可以并且应该通过代码的方式纠正,使程序继续运行,是必须要处理的。

4.请描述对运行时异常(RuntimeException)的理解

运行时期异常:runtime异常。在运行时期,检查异常.在编译时期,运行异常不会编译器检测(不报错)。

5.在main方法中创建并启动两个线程。第一个线程循环随机打印100以内的整数,直到第二个线程从键盘读取了“Q”命令。

public class TestStop{

	public static void main(String[] args){
		OutInfo out = new OutInfo();
		Thread t = new Thread(out);

		InputInfo input = new InputInfo(out);
		Thread t2 = new Thread(input);

		t.start();
		t2.start();
	}

}
class OutInfo implements Runnable{

	private boolean flag = false;

	public void run(){
		while(!flag){
			System.out.println((int)(Math.random()*100));
		}
	}

	public void isStop(boolean flag){
		this.flag = flag;
	}

}
class InputInfo implements Runnable{

	private OutInfo outInfo;

	public InputInfo(OutInfo outInfo){
		this.outInfo = outInfo;
	}
	
	public void run(){
		Scanner scan = new Scanner(System.in);	
		String line = scan.next();
		while(line != null){
			System.out.println("============> " + line);
			if(line.equalsIgnoreCase("Q")){
				// 创建的对象不是同一个对象
				//OutInfo outInfo = new OutInfo();
				//outInfo.isStop(true);
				outInfo.isStop(true);
				break;
			}
			line = scan.next();
		}
	}

}

6.编写程序,在main方法中创建一个线程。线程每隔一定时间(200ms以内的随机时间)产生一个0-100之间的随机整数,打印后将该整数放到集合中;共产生100个整数,全部产生后,睡眠30秒,然后将集合内容打印输出;在main线程中,唤醒上述睡眠的线程,使其尽快打印集合内容。

public class TestSleep{

	public static void main(String[] args){
		Thread main = Thread.currentThread();

		Test test = new Test(main);
		Thread t = new Thread(test);
		t.start();

		try{
			Thread.sleep(200 * 100);
		}catch(InterruptedException e){
			System.out.println("main被唤醒...");
		}

		t.interrupt();

	}

}

class Test implements Runnable{
	private List<Integer> list = new ArrayList<Integer>();

	private Thread main;

	public Test(Thread main){
		this.main = main;
	}

	public void run(){
		for(int i = 0; i < 100; i++){
			try{
				Thread.sleep((int)(Math.random() * 200));
			}catch(InterruptedException e){
				System.out.println("在生成100个数的过程中被唤醒...");
			}
			int num = (int)(Math.random() * 100);
			System.out.print(num + "\t");
			list.add(num);
		}
		System.out.println("100个数已生成");
		
		// 唤醒处于阻塞状态的main线程
		main.interrupt();

		try{
			Thread.sleep(1000 * 30);
		}catch(InterruptedException e){
			System.out.println("睡眠30的时候被唤醒...");
		}

		for(Integer num : list){
			System.out.print(num + "\t");
		}
		System.out.println();
	}

}

自用、复习。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值