面试题汇总—javase之多线程

面试题汇总—javase之多线程

ID:35504639

大小:58.90 KB

页数:5页

时间:2019-03-25

面试题汇总—javase之多线程_第1页
面试题汇总—javase之多线程_第2页
面试题汇总—javase之多线程_第3页
面试题汇总—javase之多线程_第4页
面试题汇总—javase之多线程_第5页
资源描述:

《面试题汇总—javase之多线程》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、1、多线程有儿种实现方法,都是什么?同步有儿种实现方法,都是什么?多线程有两种实现方法,分别是继承Thread类与实现Runnab1e接口同步的实现方面有两种,分别是synchronized,wait与notify2、线程的基本概念、线程的基本状态以及状态之间的关系线程指在程序执行过程屮,能够执行程序代码的一个执行单位,每个程序至少都有一个线程,也就是程序本身。中的线程有四种状态分别是:运行、就绪、挂起、结束。3、java中多线程应用和详解进程:是指运行屮的应用程序,每个进程都有自己独立的内存空间,一个应用程序可以同时启动多个进程。如针对

2、1E浏览器的程序,每打开一个IE浏览器窗口,就启动了一个新的进程。同样,每次执行jdk的java,exe程序,就启动一个独立的java虚拟机进程,该进程的任务就是解析并执行java程序代码。线程:是指进程中的一个执行流程,一个进程可以由多个线程组成,即在一个进程中可以同时运行多个不同的线程,他们分别执行不同的任务。当进程内多个线程同时运行时,这种运行方式称为并发运行。许多服务器程序比如数据库服务器,祝b服务器,都支持并发运行,这些服务器能同时相应来自不同客户的请求。线程和进程的主要区别在于:每个进程都需要为其分配独立的内存地址空问,而同一

3、•进程中的所有线程在同一块地址空间中工作,这些线程可以共享同一块内存和系统资源,比如共享一个对象或者共享己经打开的一个文件。java线程的运行机制:在java虚拟机进程屮,执行程序代码的任务是由线程来完成的。每个线程都有一个独立的程序计数器和方法调用栈。程序计数器:也称为pc寄存器,当线程执行一个方法吋,程序计数器指向方法区中下一条要执行的字节码指令。方法调用栈:简称方法栈,用来跟踪线程运行中一系列的方法调用过程,栈中的元素称为栈幀,每次线程调用一个方法的时候,就会向方法栈压入一个新幀。幀用来存储方法的参数、局部变量和运算过程中的临时数据

4、。下面通Sample介绍线程的运行过程publicclassSample{privateinta;publicintmethod(){intb二0;a++;b=a;returnb;}publicstaticvoidm8in(String[]args){Samples二null;inta=0;s二newSample();a=s.method();System,out.println(a);讲解:主线程从main()方法的程序代码开始运行,当主线程执行汕+操作吋,它栈数据区中的有关信息,正确定位到堆区的Sample对象的实例变量a,并把它的值

5、加1,当method()方法执行完毕后,它的栈幀就会从方法中弹出,局部变量b结束生命周期,呃in()方法的栈幀成为当前幀,主线程继续执行mainO方法,下面讲一下java中的各个区。方法区:存放Sample类的数据结构和线程所执行的字节码指令。堆区:存放线程所操作的数据(以对象的形式存放)栈去:是线程的工作区,保存线程的运行状态和対象的引用另外,计算机中指令的真正执行者是cpu,线程必须获得cpu的使用权,才能执行一条指令。线程的创建和启动:用户创建线程的方式有两种如下:1•扩展java.lang.Thread类2.实现Runnable接

6、口笫一种方法代码如下:publicclassMachineextendsThread{publicvoidrun(){System,out.prdntln("run");}publicstaticvoidmain(Stringargs[]){Machinemachine=newMachine0;machine,start();}}讲解:当运行javaMachine命令时,java虚拟机首先创建并启动主线程。主线程的任务是执行main0方法,main()方法创建了一个Machine对象,然后调用它的start()方法启动Machine线程。

7、Machine线程的任务是执行它的run()方法。主线程与用户白定义线程并发运行:publicclassMachineextendsThread{publicvoidrun(){for(inta=0;a<50;a卄)System,out.print1n(currentThread().getName()+":"+a);try{sleep(lOO);}catch(TnterruptedExceptione){thrownewRuntimeException();}}}publicstaticvoidmain(){Machinemachine

8、l二newMachine();Machinemachine2二newMachine();machinel.start();//启动第一个Machine线程machine2.start();//

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。