了解下JAVA的Java多线程及同步完成道理
通过视频学习比传统的大课堂学习更适合成人化的学习规律。有人说大课堂气氛好,学习氛围浓,热闹,可以认识很多人。一.完成多线程
1.子虚的多线程
例1:
publicclassTestThread
{
inti=0,j=0;
publicvoidgo(intflag)
{
while(true)
{
try{Thread.sleep(100);
}
catch(InterruptedExceptione)
{
System.out.println("Interrupted");
}
if(flag==0)i++;
System.out.println("i="+i);
}
else
{
j++;
System.out.println("j="+j);
}
}
}
publicstaticvoidmain(String[]args)
{
newTestThread().go(0);
newTestThread().go(1);
}
}下面程序的运转了局为:
i=1
i=2
i=3
。。。
了局将一向打印出I的值。我们的企图是当在while轮回中挪用sleep()时,另外一个线程就将起动,打印出j的值,但了局却并非如许。关于sleep()为何不会呈现我们料想的了局,鄙人面将讲到。
2.完成多线程
经由过程承继class Thread或完成Runnable接口,我们能够完成多线程
2.1经由过程承继class Thread完成多线程
class Thread中有两个最主要的函数run()和start()。
1)run()函数必需举行覆写,把要在多个线程中并行处置的代码放到这个函数中。
2)固然run()函数完成了多个线程的并行处置,但我们不克不及间接挪用run()函数,而是经由过程挪用start()函数来挪用run()函数。在挪用start()的时分,start()函数会起首举行与多线程相干的初始化(这也是为何不克不及间接挪用run()函数的缘故原由),然后再挪用run()函数。
例2:
publicclassTestThreadextendsThread
{
privatestaticintthreadCount=0;
privateintthreadNum=++threadCount;
privateinti=5;
publicvoidrun()
{
while(true)
{
try
{
Thread.sleep(100);
}
catch(InterruptedExceptione)
{
System.out.println("Interrupted");
}
System.out.println("Thread"+threadNum+"="+i);
if(--i==0)return;
}
}
publicstaticvoidmain(String[]args)
{
for(inti=0;i<5;i++)
newTestThread().start();
}
}运转了局为:
Thread1=5
Thread2=5
Thread3=5
Thread4=5
Thread5=5
Thread1=4
Thread2=4
Thread3=4
Thread4=4
Thread1=3
Thread2=3
Thread5=4
Thread3=3
Thread4=3
Thread1=2
Thread2=2
Thread5=3
Thread3=2
Thread4=2
Thread1=1
Thread2=1
Thread5=2
Thread3=1
Thread4=1
Thread5=1
从了局可见,例2能完成多线程的并行处置。
<p>**:在下面的例子中,我们只用new发生Thread对象,并没有效reference来纪录所发生的Thread对象。依据渣滓接纳机制,当一个对象没有被reference援用时,它将被接纳。可是渣滓接纳机制对Thread对象“不建立”。由于每个Thread城市举行注册举措,以是即便我们在发生Thread对象时没有指定一个reference指向这个对象,实践上也会在某个中央有个指向该对象的reference,以是渣滓接纳器没法接纳它们。
到时我们不用学struts,不用学spring,不用学Hibernate,只要能把jsf学会了,完全可以替代所有的框架,包括AJAX,都知道AJAX并不是新技术,虽说我没深入学习jsf但我认为jsf应该已经能通过其它技术替代AJAX,实现无缝刷新。 http://www.jdon.com/去下载,或到同济技术论坛的服务器ftp://nro.shtdu.edu.cn去下,安装上有什么问题,可以到论坛上去提问。 多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。 学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。 是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言 一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。 Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading) 《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。 是一种使网页(Web Page)产生生动活泼画面的语言 一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从 接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。 是一种突破用户端机器环境和CPU 让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。 J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。 不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。 其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。 你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。 设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧 是一种为 Internet发展的计算机语言 那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!
页:
[1]