欢迎来到天天文库
浏览记录
ID:46579794
大小:387.06 KB
页数:10页
时间:2019-11-25
《JAVA编程思想 (2)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、JAVA编程思想——多线程姓名:常灿光班级:2012163班学号:201216323专业:网络工程163班1/10从2015年春节开始接触JAVA,在寒假期间每天都会花费两个小时左右的事件坚持看毕向东老师录的Java教学视频,我非常认同上面的一句话:“万物皆对象”,也非常认同毕向东老师所说的什么叫做面向对象:“面向对象就可以理解为现实生活中,你面对的对象,原来你需要自己做的事情如洗衣服等,在你没认识你对象之前都是要你自己去洗,在有了对象之后,你就可以把这件事情交给你对象去做,你原来面对的是你的衣服,现在你面向的是你的对象。你只要面向你的对象进行
2、“操作”就行了”。当然这样解释什么是面向对象或许不恰当不合适,但是我感觉能很形象的解释Java是一门面向对象编程的语言。在这里,我将会就Java中的多线程问题发表自己的观点。现在常用的操作系统,如windows,MacOS和Linux等都是多任务的系统,能在同一个时间段内同时执行多个任务。例如在Windows系统中可以边听音乐边使用Word文件,同时杀毒软件还在后台默默地工作,当然还可以使用输入法打字等。对操作系统而言,正在执行的音乐播放器、Word软件、和输入法等都是一个个进程,就算是编写Java程序也是一个进程。什么是进程?进程是程序在操作
3、系统上运行的过程,它是系统进行资源分配和调度的独立单位。关于进程还有许多的的定义,但总的来说,进程最根本的属性是动态性和并发性,因此可将进程定义为程序在环境中执行的过程。什么是线程?在一个进程内部又可以执行多个任务,一般将进程内部的任务称为线程。线程是程序中单个顺序的控制流,是程序使用CPU的基本单位。线程是在进程这个概念上提出的,线程和进程都是在计算机中的并发执行相关概念。无论是进程还是线程,最终目的就是做大限度的提高计算机系统资源的使用效率,提高程序的并发性。线程与进程之间的区别:1>地址空间和其它资源:每个进程占有独立的地址空间,包括代码
4、、数据及其它资源。然而,属于同一个进程中的线程只能共享这些资源,不具有独立的地址空间和其他资源。2>通信:进程之间的通信开销较大受到诸多限制,必须具有明确的对象或操作接口并采用统一的通信协议;而线程间可以直接读写进程数据段来进行通信,需要进程同步和互斥手段的辅助,以保证数据的一致性。3>切换:进程间的切换开销较大,而线程间的切换开销较小4>控制表:与进程的控制表PCB相似,线程也有自己的控制表TCP。但是TCP中保存的线程状态远小于PCB。一:线程的创建Java中的线程设计为一个对象,但不是每一个对象都是线程,只有实现类Runnable接口的类
5、对象才能称为线程。Java语言提供了两种途径实现多线程,一种是继承Thread类,另一种是直接实现Runnable接口。2/101通过继承Thread类创建线程2通过实现Runnable接口创建线程格式如下:格式如下:publicclass类名implementsRunnable{//定义RunnablePublicclass类名extendsThread{接口属性;//继承Thread类属性;//定义类的属性方法;//定义类的属性方法;//定义类的Publicvoidrun(){其他方法//线程程序代码Publicvoidrun(){}//线
6、程程序代码}}}二:Java主线程——main()一个Java应用程序的主类的main()方法是它的主线程。当Java程序启动时,一个主线程自动被创建并运行。执行的接入点就是main()方法,可以将其视为是主线程的run()方法。主线程是自动建立的,主线程是产生应用程序所有其他线程的线程,并且主线程通常最后执行,以方便完成各种收尾工作。就是说,程序中只要有其他非守护线程尚未结束,主线程就不会结束,即时main()方法中使用了return语句或该main()方法内的内容已执行结束也是一样的。例子:获取主线程publicclassMainTbrea
7、dimplementsRunnable{publicvoidrun(){for(inti=1;i<=10;i++){//循环10次System.out.println("当前运行的线程:"+Thread.currentThread()+",i="+i);//输出当前运行的线程}}publicstaticvoidmain(String[]args){3/10Threadmt=Thread.currentThread();//获取主线程System.out.println("线程信息:"+mt);//输出主线程信息System.out.printl
8、n("线程名称:"+mt.getName());//取得主线程名称mt.setName("主线程");//设置主线程名称System.out.prin
此文档下载收益归作者所有