了解下JAVA的Java多线程初学者指南(8):从线程前往数据的两种办法
其实产生见解的过程就是训练自己发现问题,分析问题的能力。根据以上的认识我想谈下传统的学习与通过视频独立学习的优缺点:从线程中前往数据和向线程传送数据相似。也能够经由过程类成员和回调函数来前往数据。但类成员在前往数据和传送数据时有一些区分,上面让我们来看看它们区分在哪。
1、经由过程类变量和办法前往数据
利用这类办法前往数据必要在挪用start办法后才干经由过程类变量或办法失掉数据。让我们先来看看例程2-13会失掉甚么了局。
package mythread;
public class MyThread extends Thread
{
privateString value1;
private String value2;
public void run()
{
value1 = "经由过程成员变量前往数据";
value2 = "经由过程成员办法前往数据";
}
public static void main(String[] args) throws Exception
{
MyThread thread = new MyThread();
thread.start();
System.out.println("value1:" + thread.value1);
System.out.println("value2:" + thread.value2);
}
}
运转下面的代码有大概输入以下的了局:
value1:null
value2:null
从下面的运转了局看很不一般。在run办法中已对value1和value2赋了值,而前往的倒是null。产生这类情形的缘故原由是挪用start办法后就立即输入了value1和value2的值,而这里run办法还没有实行到为value1和value2赋值的语句。要制止这类情形的产生,就必要等run办法实行完后才实行输入value1和value2的代码。因而,我们能够想到利用sleep办法将主线程举行提早,如能够在thread.start()后加一行以下的语句:
sleep(1000);
如许做可使主线程提早1秒后再往下实行,但如许做有一个成绩,就是我们怎样晓得要提早多长工夫。在这个例子的run办法中只要两条赋值语句,并且只创立了一个线程,因而,提早1秒已充足,但假如run办法中的语句很庞大,这个工夫就很难展望,因而,这类办法其实不不乱。
我们的目标就是失掉value1和value2的值,因而,只需判别value1和value2是不是为null。假如它们都不为null时,就能够输入这两个值了。我们可使用以下的代码来到达这个目标:
while (thread.value1 == null || thread.value2 == null);
利用下面的语句能够很不乱地制止这类情形产生,但这类办法太泯灭体系资本。人人能够假想,假如run办法中的代码很庞大,value1和value2必要很长工夫才干被赋值,如许while轮回就必需一向实行下往,直到value1和value2都不为空为止。因而,我们能够对下面的语句做以下的改善:
while (thread.value1 == null || thread.value2 == null)
sleep(100);
<p>
而学习JAVA我觉得最应该避免的就是:只学习,不思考,只记忆,不实践! 接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。 Java 编程语言的风格十分接近C、C++语言。 Java是一种计算机编程语言,拥有跨平台、面向对java Java是一种计算机编程语言,拥有跨平台、面向对java Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台 所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。 另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。 Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站 一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从 在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。 你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。 如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。 如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。 Java 编程语言的风格十分接近C、C++语言。 Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站 其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。 Java 编程语言的风格十分接近C、C++语言。 是一种使用者不需花费很多时间学习的语言 多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。
页:
[1]