欢迎来到天天文库
浏览记录
ID:81755625
大小:66.00 KB
页数:9页
时间:2022-07-20
《Java多线程习题》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
Java多线程习题知识点:Java的多线程,实现多线程的两种方法,线程控制、调度方法一、选择题1、什么原因可导致线程停止执行。()A.线程调用了wait()方法;B.线程调用了yield()方法;C.线程调用了pause()方法;D.线程调用了sleep()方法。2、哪个方法是实现Runnable接口所需的?A.wait()B.run()C.stop()D.update()E.resume()3、以下代码的调试结果为?()publicclassBgroundextendsThread{publicstaticvoidmain(Stringargv[]){Bgroundb=newBground();b.run();}publicvoidstart(){for(inti=0;i<10;i++){System.out.println("Valueofi="+i);}}}A.编译错误,没有定义线程的run方法;B.由于没有定义线程的run方法,而出现运行错误;C.编译通过,运行输出values0to9D.编译通过,运行无输出4、有关线程的叙述正确的有:()A.通过继承Thread类或实现Runnable接口,可以获得对类中方法的互斥锁定。B.可以获得对任何对象的互斥锁定。C.线程通过调用对象的synchronized方法可取得对象的互斥锁定。D.线程调度算法是平台独立的。5、以下哪个是线程类的方法?A.yield()B.sleep(longmsec)C.go()D.stop()6、以下哪个最准确描述synchronized关键字?A.允许两线程并行运行,而且互相通信;B.保证在某时刻只有一个线程可访问方法或对象;C.保证允许两个或更多处理同时开始和结束;D.保证两个或更多线程同时开始和结束。7、于Java语言的内存回收机制,下列选项中最正确的一项是()。A、Java程序要求用户必须手工创建一个线程来释放内存B、Java程序允许用户使用指针来释放内存C、内存回收线程负责释放无用内存D、内存回收线程不能释放内存对象8、下列哪一个类实现了线程组?()A、java.lang.ObjictB、java.1ang.ThreadGroupC、Java.1ang.ThreadD、java.1ang.Runnable
19、下列说法中错误的一项是()。A、Applet必须全部重写其生命周期方法B、Applet不必全部重写其生命周期方法C、Applet中使用了线程,则需要重写相应的生命周期方法D、stop()总是在destroy()之前被调用。10、在java程序中,下列关于线程的说法错误的是:()A、run方法是运行线程的主体B、多个进程运行时执行顺序是按顺序执行的C、如果线程死亡,它便不能运行D、在java中,高优先级的可运行线程会抢占低优先级线程11、关于JDBC访问数据库的说法错误的是:()A、建立数据库连接时,必须加载驱动程序,可采用Class.forName()实现B、用于建立与某个数据源的连接可采用DriverManager类的getConnection方法C、建立数据库连接时,必须要进行异常处理D、JDBC中查询语句的执行方法必须采用Statement类实现12、运行下列程序,会产生什么结果()publicclassXextendsThreadimplementsRunable{ publicvoidrun(){System.out.println("thisisrun()"); } publicstaticvoidmain(Stringargs[]) { Threadt=newThread(newX()); t.start(); }}A)第一行会产生编译错误B)第六行会产生编译错误C)第六行会产生运行错误D)程序会运行和启动13、下面哪个方法可以在任何时候被任何线程调用?()A)notify()B)wait()C)notifyAll()D)sleep()E)yield()F)synchronized(this)14、下列哪些情况可以终止当前线程的运行?()A)抛出一个例外时。B)当该线程调用sleep()方法时。C)当创建一个新线程时。D)当一个优先级高的线程进入就绪状态时。15、在java程序中,下列关于线程的说法错误的是()A)线程启动调用start方法B)线程的主体是run方法C)线程运行中调用sleep方法可以进入阻塞状态D)在java中,优先级的数值为1的线程可以抢占优先级为5的线程的资源16、下面关于Java中线程的说法不正确的是()?A)调用join()方法可能抛出异常InterruptedException。B)sleep()方法是Thread类的静态方法。C)调用Thread类的sleep()方法可终止一个线程对象。D)线程启动后执行的代码放在其run方法中。17、Thread类用来创建和控制线程,一个线程从下面()方法开始执行。A)init()B)start()C)run()D)notifyAll()18.实现线程体的方式除了继承Thread类,还可以实现接口。E)A、CloneableB、RunnableC、IterableD、Serializable二、填空题1、若在高优先级线程的run()方法中调用______方法,则该线程将让出CPU,使其他_______的线程获得CPU的使用权。
22、通过实现Runnable接口创建线程的过程是:将实现Runnable的一个__________作为target参数传递给Thread类的__________,该对象提供线程体。3、线程通过方法可以休眠一段时间,然后恢复运行,当时,线程进入死亡状态。4、编写一个线程可以用和来实现。5、在执行Java线程的程序中,程序通过调用_______方法启动线程,随后又调用________方法。6、编写一个线程可以用继承类和实现接口来实现。7、在执行Java线程的程序中,程序通过调用_____方法启动线程,随后又调用_____方法。8、如果几个并发线程对相同的数据对象进行存取,可能导致数据不一致,为避免发生这种情况,需要编程实现线程同步,在执行访问共享数据的代码时对数据加互斥锁,加锁语句的关键字是__________________,如果编程时不注意,加锁可能导致死锁,避免死锁的一般做法是。9、Java线程程序可以调用___________方法,使线程进入睡眠状态,可以通过调用___________________方法设置线程的优先级。10、通过实现接口可以创建一个包含线程体的类,该接口只申明了一个方法:,假定一个线程体对象为rt,则可以用ThreadmyThread=语句来创建一个线程对象,并用语句启动myThread线程对象。11、阅读下面的程序MyAdd.java,填写划线部分的语句或注释,并写出程序执行结果。publicclassMyAdd{//继承线程类 staticinttotal=10; intn;publicMyAdd(intn){this.n=n;}publicvoidrun(){try{sleep(n);//含义是:total=total+n;System.out.println(total);}catch(Exceptione){System.out.println(“EXCEPTION!”);}} publicstaticvoidmain(String[]args) { MyAddt1=newMyAdd(3000); ;//启动线程t1 }}12、请完成下列Java程序:运行3个线程,每一个线程有自己的标志,用a,b,c表示,每个线程显示一个”Start”信息和一个”End”信息并且间隔地显示2个“Loop”信息(间隔变化为(0.5~2)秒之间的随机延迟)。程序运行结果如下:(注:由于时间间隔为随机数,所以,运行结果的顺序不惟一)aStartbStartcStartbLoopaLoopbLoopbEnd
3cLoopaLoopaEndcLoopcEnd注意:请勿改动main()主方法和其他已有语句内容,仅在下划线处填放适当的语句。Publicclassex2_2implementsRunnable{staticcharflag2_2=’a’;publicstaticvoidmain(String[]arg){ex2_2obj2_2=newex2_2();Threadthread2_2=newThread(obj2_2);thread2_2.start();thread2_2=newThread(obj2_2);thread2_2.start();thread2_2=new‘Thread(obj2_2);thread2_2.start();}publicvoidrun(){charmyflag2_2;synchronized(this){________________;}System.out.println(myflag2_2+”Start”);for(inti=0;i<2;i++){try{Thread.sleep(rand(500,2000));System.out.println(myflag2_2+”Loop”);}catch(InterruptedExceptionie){System.out.prinfln(ie);}}System.out.println(myflag2_2+”End”);}finalprivateintrand(intlow,inthigh){return(________________);}}13、下面的程序利用线程输出从a到z的26个字母,每隔一秒钟输出一个字母,程序不完整,请阅读程序代码,根据注释要求在划线处补充完成代码。publicclassTest4implementsRunnable{charcharArray[]=newchar[26];publicTest4(){for(inti=0;i4{for(inti=0;i53、sleep()和wait()有什么区别?4、启动一个线程是用run()还是start()?5、当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?6、多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么?7、线程的基本概念、线程的基本状态以及状态之间的关系8、线程的同步、如何实现线程的同步9、同步和异步有何异同,在什么情况下分别使用他们?举例说明。10、什么是死锁 11、什么是线程饿死,什么是活锁? 12、解释实现多线程的几种方法? Java线程可以实现Runnable接口或者继承Thread类来实现,当你打算多重继承时,优先选择实现Runnable。 13、Thread.start()与Thread.run()有什么区别? 14、为什么需要run()和start()方法,我们可以只用run()方法来完成任务吗? 15、什么是ThreadLocal类,怎么使用它? 16.在静态方法上使用同步时会发生什么事? 17、使用java语言如何创建线程对象?请列出常用的两种方法。 18、线程之间通信的方法有哪几个?分别起到什么作用? 四、编程题1、应用Java中线程的概念,编写一个Java程序(包括一个主程序类,一个Thread类的子类)。在主程序中创建2个线程(用子类),将其中一个线程的优先级设为610,另一个线程的优先级设为6。让优先级为10的线程打印200次“线程1正在运行”,优先级为6的线程打印200次“线程2正在运行”。(提示:设置线程优先级用setPriority方法)2、假设一个银行的ATM机,它可以允许用户存款也可以取款。现在一个账户上有存款200元,用户A和用户B都拥有在这个账户上存款和取款的权利。用户A将存入100元,而用户B将取出50元,那么最后账户的存款应是250元。实际操作过程如下:(1)先进行A的存款操作:1)得到账户的存款数额200,耗时2s。2)将账户数额增加100,耗时忽略不计3)将新生成的账户结果300返回到ATM机的服务器上,耗时2s(2)再进行B的取款操作:4)得到增加后账户存款数额300,耗时2s。5)判断取款额是否小于账户余额,若是,则将账户数额减少50,否则抛出异常信息,耗时忽略不计。6)将新生成的账户结果250返回到ATM机的服务器上,耗时2s。请根据以上要求,将A的操作和B的操作分别用线程来表示,编写一个Java程序实现该功能。3、请编写一个类,类名为SubThread,是Thread类的子类。该类中定义了含一个字符串参数的构造方法和run()方法,方法中有一个for循环,循环一共进行5次,循环体先在命令行显示该线程循环了第几次,然后随机休眠小于一秒的时间,循环结束后显示线程结束信息:线程名+finished。编写一个Application程序,并在其中创建SubThread类的三个线程对象T1,T2,T3,他们的名称分别为Frist,Second,Third,并启动这三个线程74、请编写一个类,类名为MulThread,定义含一个字符串的构造方法,并实现Runnable接口,接口中的run()方法如下实现:方法先在命令行显示该线程信息,然后随机休眠小于一秒的时间,最后显示线程结束信息:finished+线程名。编写一个Application程序,在其中通过Runnable创建MUlThread类的三个线程对象T1,T2,T3,并启动这三个线程。5、假设某家银行可接受顾客的汇款,每进行一步汇款,便可计算出汇款总额。现有两名顾客,每人都分3次.每次100元将钱汇入。试编写一个程序,来模拟顾客的汇款操作。6、利用多线程求解某范围素数,每个线程负责1000范围:线程1找1-1000;线程2找1001-2000;线程3找2001-3000。编程程序将每个线程找到的素数及时打印。7、应用Java中线程的概念,编写一个Java程序(包括一个主程序类,一个Thread类的子类)。在主程序中创建2个线程(用子类),将其中一个线程的优先级设为10,另一个线程的优先级设为6。让优先级为10的线程打印200次“线程1正在运行”,优先级为6的线程打印200次“线程2正在运行”。(提示:设置线程优先级用setPriority方法)8、编写一个程序,扫描本机的小于5000的端口,显示正在使用的端口号。要求采用5个线程实现,每个线程扫描1000个端口。最新资料,word文档,可以自由编辑!!精8品文档下载【本页是封面,下载后可以删除!】
4{for(inti=0;i53、sleep()和wait()有什么区别?4、启动一个线程是用run()还是start()?5、当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?6、多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么?7、线程的基本概念、线程的基本状态以及状态之间的关系8、线程的同步、如何实现线程的同步9、同步和异步有何异同,在什么情况下分别使用他们?举例说明。10、什么是死锁 11、什么是线程饿死,什么是活锁? 12、解释实现多线程的几种方法? Java线程可以实现Runnable接口或者继承Thread类来实现,当你打算多重继承时,优先选择实现Runnable。 13、Thread.start()与Thread.run()有什么区别? 14、为什么需要run()和start()方法,我们可以只用run()方法来完成任务吗? 15、什么是ThreadLocal类,怎么使用它? 16.在静态方法上使用同步时会发生什么事? 17、使用java语言如何创建线程对象?请列出常用的两种方法。 18、线程之间通信的方法有哪几个?分别起到什么作用? 四、编程题1、应用Java中线程的概念,编写一个Java程序(包括一个主程序类,一个Thread类的子类)。在主程序中创建2个线程(用子类),将其中一个线程的优先级设为610,另一个线程的优先级设为6。让优先级为10的线程打印200次“线程1正在运行”,优先级为6的线程打印200次“线程2正在运行”。(提示:设置线程优先级用setPriority方法)2、假设一个银行的ATM机,它可以允许用户存款也可以取款。现在一个账户上有存款200元,用户A和用户B都拥有在这个账户上存款和取款的权利。用户A将存入100元,而用户B将取出50元,那么最后账户的存款应是250元。实际操作过程如下:(1)先进行A的存款操作:1)得到账户的存款数额200,耗时2s。2)将账户数额增加100,耗时忽略不计3)将新生成的账户结果300返回到ATM机的服务器上,耗时2s(2)再进行B的取款操作:4)得到增加后账户存款数额300,耗时2s。5)判断取款额是否小于账户余额,若是,则将账户数额减少50,否则抛出异常信息,耗时忽略不计。6)将新生成的账户结果250返回到ATM机的服务器上,耗时2s。请根据以上要求,将A的操作和B的操作分别用线程来表示,编写一个Java程序实现该功能。3、请编写一个类,类名为SubThread,是Thread类的子类。该类中定义了含一个字符串参数的构造方法和run()方法,方法中有一个for循环,循环一共进行5次,循环体先在命令行显示该线程循环了第几次,然后随机休眠小于一秒的时间,循环结束后显示线程结束信息:线程名+finished。编写一个Application程序,并在其中创建SubThread类的三个线程对象T1,T2,T3,他们的名称分别为Frist,Second,Third,并启动这三个线程74、请编写一个类,类名为MulThread,定义含一个字符串的构造方法,并实现Runnable接口,接口中的run()方法如下实现:方法先在命令行显示该线程信息,然后随机休眠小于一秒的时间,最后显示线程结束信息:finished+线程名。编写一个Application程序,在其中通过Runnable创建MUlThread类的三个线程对象T1,T2,T3,并启动这三个线程。5、假设某家银行可接受顾客的汇款,每进行一步汇款,便可计算出汇款总额。现有两名顾客,每人都分3次.每次100元将钱汇入。试编写一个程序,来模拟顾客的汇款操作。6、利用多线程求解某范围素数,每个线程负责1000范围:线程1找1-1000;线程2找1001-2000;线程3找2001-3000。编程程序将每个线程找到的素数及时打印。7、应用Java中线程的概念,编写一个Java程序(包括一个主程序类,一个Thread类的子类)。在主程序中创建2个线程(用子类),将其中一个线程的优先级设为10,另一个线程的优先级设为6。让优先级为10的线程打印200次“线程1正在运行”,优先级为6的线程打印200次“线程2正在运行”。(提示:设置线程优先级用setPriority方法)8、编写一个程序,扫描本机的小于5000的端口,显示正在使用的端口号。要求采用5个线程实现,每个线程扫描1000个端口。最新资料,word文档,可以自由编辑!!精8品文档下载【本页是封面,下载后可以删除!】
53、sleep()和wait()有什么区别?4、启动一个线程是用run()还是start()?5、当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?6、多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么?7、线程的基本概念、线程的基本状态以及状态之间的关系8、线程的同步、如何实现线程的同步9、同步和异步有何异同,在什么情况下分别使用他们?举例说明。10、什么是死锁 11、什么是线程饿死,什么是活锁? 12、解释实现多线程的几种方法? Java线程可以实现Runnable接口或者继承Thread类来实现,当你打算多重继承时,优先选择实现Runnable。 13、Thread.start()与Thread.run()有什么区别? 14、为什么需要run()和start()方法,我们可以只用run()方法来完成任务吗? 15、什么是ThreadLocal类,怎么使用它? 16.在静态方法上使用同步时会发生什么事? 17、使用java语言如何创建线程对象?请列出常用的两种方法。 18、线程之间通信的方法有哪几个?分别起到什么作用? 四、编程题1、应用Java中线程的概念,编写一个Java程序(包括一个主程序类,一个Thread类的子类)。在主程序中创建2个线程(用子类),将其中一个线程的优先级设为
610,另一个线程的优先级设为6。让优先级为10的线程打印200次“线程1正在运行”,优先级为6的线程打印200次“线程2正在运行”。(提示:设置线程优先级用setPriority方法)2、假设一个银行的ATM机,它可以允许用户存款也可以取款。现在一个账户上有存款200元,用户A和用户B都拥有在这个账户上存款和取款的权利。用户A将存入100元,而用户B将取出50元,那么最后账户的存款应是250元。实际操作过程如下:(1)先进行A的存款操作:1)得到账户的存款数额200,耗时2s。2)将账户数额增加100,耗时忽略不计3)将新生成的账户结果300返回到ATM机的服务器上,耗时2s(2)再进行B的取款操作:4)得到增加后账户存款数额300,耗时2s。5)判断取款额是否小于账户余额,若是,则将账户数额减少50,否则抛出异常信息,耗时忽略不计。6)将新生成的账户结果250返回到ATM机的服务器上,耗时2s。请根据以上要求,将A的操作和B的操作分别用线程来表示,编写一个Java程序实现该功能。3、请编写一个类,类名为SubThread,是Thread类的子类。该类中定义了含一个字符串参数的构造方法和run()方法,方法中有一个for循环,循环一共进行5次,循环体先在命令行显示该线程循环了第几次,然后随机休眠小于一秒的时间,循环结束后显示线程结束信息:线程名+finished。编写一个Application程序,并在其中创建SubThread类的三个线程对象T1,T2,T3,他们的名称分别为Frist,Second,Third,并启动这三个线程
74、请编写一个类,类名为MulThread,定义含一个字符串的构造方法,并实现Runnable接口,接口中的run()方法如下实现:方法先在命令行显示该线程信息,然后随机休眠小于一秒的时间,最后显示线程结束信息:finished+线程名。编写一个Application程序,在其中通过Runnable创建MUlThread类的三个线程对象T1,T2,T3,并启动这三个线程。5、假设某家银行可接受顾客的汇款,每进行一步汇款,便可计算出汇款总额。现有两名顾客,每人都分3次.每次100元将钱汇入。试编写一个程序,来模拟顾客的汇款操作。6、利用多线程求解某范围素数,每个线程负责1000范围:线程1找1-1000;线程2找1001-2000;线程3找2001-3000。编程程序将每个线程找到的素数及时打印。7、应用Java中线程的概念,编写一个Java程序(包括一个主程序类,一个Thread类的子类)。在主程序中创建2个线程(用子类),将其中一个线程的优先级设为10,另一个线程的优先级设为6。让优先级为10的线程打印200次“线程1正在运行”,优先级为6的线程打印200次“线程2正在运行”。(提示:设置线程优先级用setPriority方法)8、编写一个程序,扫描本机的小于5000的端口,显示正在使用的端口号。要求采用5个线程实现,每个线程扫描1000个端口。最新资料,word文档,可以自由编辑!!精
8品文档下载【本页是封面,下载后可以删除!】
此文档下载收益归作者所有
举报原因
联系方式
详细说明
内容无法转码请点击此处