Java作业

来源:互联网 发布:java倒三角形 编辑:程序博客网 时间:2024/06/16 22:39
多线程
一、判断题(T为正确,F为错误),每题1分
1.如果线程死亡,它便不能运行。(T)
2.在Java中,高优先级的可运行线程会抢占低优先级线程。( F)
3.线程可以用yield方法使低优先级的线程运行。(F)
4...程序开发者必须创建一个线程去管理内存的分配。(F)
5.一个线程在调用它的start方法,之前,该线程将一直处于出生期。( T)
6.当调用一个正在进行线程的stop( )方法时,该线程便会进入休眠状态。(F)
7.一个线程可以调用yield方法使其他线程有机会运行。(T)
8. 多线程没有安全问题(F)
9. 多线程安全问题的解决方案可以使用Lock提供的具体的锁对象操作(T)
10. Stop()方法是终止当前线程的一种状态(T)


二、选择题(不定项选择题),每题2分
1.Java语言中提供了一个D线程,自动回收动态分配的内存。
A.异步
B.消费者
C.守护
D.垃圾收集
2.Java语言避免了大多数的C错误。
A.数组下标越界
B.算术溢出
C.内存泄露 
D.非法的方法参数
3.有三种原因可以导致线程不能运行,它们是BCD。
A.等待
B.阻塞
C.休眠
D.挂起及由于I/O操作而阻塞
4.当A方法终止时,能使线程进入死亡状态。
A.run
B.setPrority//更改线程优先级
C.yield//暂停当前线程的执行  执行其他线程
D.sleep//线程休眠
5.用B方法可以改变线程的优先级。
A.run
B.setPrority
C.yield
D.sleep
6.线程通过C方法可以使具有相同优先级线程获得处理器。
A.run
B.setPrority
C.yield
D.sleep
7.线程通过D方法可以休眠一段时间,然后恢复运行。
A.run
B.setPrority
C.yield
D.sleep
8.方法resume( )负责重新开始 D线程的执行。
A.被stop( )方法停止
B.被sleep( )方法停止
C.被wait( )方法停止
D.被suspend( )方法停止
9.BCD方法可以用来暂时停止当前线程的运行。
A.stop( )
B.sleep( )
C.wait( )
D.suspend( )
10. 请问下列哪些类是定义在java.io包中的抽象类(ABCDEF)
A. InputStream
B. OutputStream
C. PrintStream
D. Reader
E. FileInputStream
F. FileWriter


三、简述题,每题5分
1.简述程序、进程和线程之间的关系?什么是多线程程序?
程序是应用客户端等执行的。程序运行产生进程。一个程序可以产生多个进程。
一个进程可以包含多个线程。线程依赖于进程存在。一个线程相当于进程中的某个任务
多线程相当于:一个进程开启多个任务,任务互相抢占CPU的执行权。CPU在多个线程之间高效切换。
3.什么是线程调度?Java的线程调度采用什么策略?
线程调度是对处于可运行状态的多个线程对象进行协调。防止多个线程争夺资源是的系统司机或崩溃。Java的线程调度策略为CPU在多个线程进行高效切换以及基于线程优先级的抢先级调度。
4.如何在Java程序中实现多线程?
一共三种方式:
一:
1.自定义一类Mythread继承自Thread类
2.重写Thread类中的run()方法
3.主线程创建线程实例
二:
1. 定义一个MyRunnable实现Runnable接口
2. 实现run()方法
3. 主线程创建Myrunnable对象
4. 启动Thread类对象,将Myrunnable作为参数传递
三:
Executors工厂类实现有返回结果的ExecutorService:的线程池
5.试简述Thread类的子类或实现Runnable接口两种方法的异同?
不同:一个为继承Thread ,另一个为实现Runnable
相同点:都需要重写run()方法。
5. 说明缓冲流的优点和原理
缓冲流输入输出字节可以得到更高的执行效率
原理:是创建一个缓冲区,通过写入和导入。
效率高是由于输入输出的存在缓冲区内,最后一次性打包发送。
普通流:是输入或输出好一次,打包执行一次。再继续执行。
8:在Java中wait()和sleep()方法的不同?
 执行wait()方法时,线程进行休眠等待并且释放synchornize锁
执行sleep()方法使线程睡眠切不会丢失synchornize锁。指定睡眠的时间。当时间过后继续执行。


9:Java中Runnable和Callable有什么不同?
Callable使用call()方法,Runnable使用run()方法。
 call()方法可以返回值,run()方法不能返回值  
 call()方法可以抛出受检查的异常,run()方法不行
Runnable启动为 线程.start();
Callable 使用 Future submit(Callable task):提交任务从而启动线程


四、程序设计题
1.编写一个应用程序,在线程同步的情况下来实现“生产者―消费者”问题。





2.修改上题,由于各个线程是异步运行的,因此无法预计其相对速度,为了使生产者能够不断地生产,可以使用循环缓冲区,保证有足够多的内存区保存更多的产品。(生产者——仓库——消费者) 




3 :
1)将若干个Student对象;若干个Teacher对象,写出到d:/0404/a.txt中,
  2)将该文件中所有的Student对象反序列化回来,装入List,所有的Teacher对象反序列化回来装入另一个List








4:实现字符串和字节数组之间的相互转换,比如:将字符串”西部开源技术中心xbkyjszx”转换为字节数组,并将字节数组再转换回字符串!


5:用Java编程一个会导致死锁的程序,你将怎么解决?请你设计



6:递归实现输入任意目录,列出文件以及文件夹



原创粉丝点击