`
Teok
  • 浏览: 148624 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

CLDC1.1学习:java.lang

    博客分类:
  • J2ME
阅读更多
me的lang包相比jdk 1.6的lang包简化很多,me里面没有泛型、注解等其他比较重量级功能类(当然用重量级来描述也不一定合适,具体的参照标准要参阅相关Java ME标准)。官方api地址:http://java.sun.com/javame/reference/apis/jsr139/
除了基本数据类型的封装类之外,就只有如下几个类了:Class, Math, Object, Runtime, System, Thread, Throwable以及Exception类及其子类和Error类及其子类; 只有一个接口:Runnable。下面抽其中几个类来详细学习:

一.StringBuffer
一个StringBuffer实现了一个可变的字符序列。一个StringBuffer类似一个String,但是它可以被改变。在任何时刻StringBuffer实例都包含一些特定字符串序列,但是通过调用特定的方法会改变StringBuffer长度和内容。
StringBuffer是多线程安全的。The methods are synchronized where necessary so that all the operations on any particular instance behave as if they occur in some serial order that is consistent with the order of the method calls made by each of the individual threads involved.
StringBuffer被编译来实现一对字符串的“+”操作。
For example, the code:

     x = "a" + 4 + "c"
 
is compiled to the equivalent of:

     x = new StringBuffer().append("a").append(4).append("c")
                           .toString()

总之这样做可以避免创建过多的临时String。
StringBuffer最重要的就是append和insert操作,它们被多次重载以接受各种类型数据。已给定的各类型数据都会被有效的转换为string,然后append或者insert到StringBuffer。

每个string buffer都会有容量,但是我们不用关心它,string buffer的相关方法会自动维护这个容量。

二.System
System包含多个有用的类字段(就是类实例,如err和out)。不能被实例化。
方法列表:
1).arraycopy(Object src, int srcOffset, Object dst, int dstOffset, int length)有选择的复制数组
2). static long currentTimeMillis()
3). static void exit(int status)
4). static void gc()
5). static String getProperty(String key)
6). static int identityHashCode(Object x) 调用hashCode()返回结果,不管给定参数的类是否重写hashCode()

三.Thread
JVM允许一个程序拥有多个同时执行的线程。每个线程都有优先级(priority)。有高优先级的thread会优先于低优先级thread执行。有两种可以创建新的可执行线程的方法:1.继承Thread类,重写run方法;2。实现Runnable接口.

四.Object
1. wait
导致当前线程等待直到其它线程对这个对象调用notify()或者notifyAll()方法,或者指定的等待时间(timeout)到期。
当前线程必须拥有这个对象的监听。
这个方法导致当前线程(称作线程T)把自己置于该对象(this object)的等待列表中,然后放弃所有对于该对象的同步声明(我理解为就是放弃对象锁)。线程T此时无法进行完成线程调度目标并处于休眠状态直到一下四种情况之一发生:
1)某个其它线程调用了该对象的notify方法并且线程T恰好被选作为那个要唤醒的线程。
2)某个其它线程调用了这个对象的notifyAll方法
3)某个其它线程interrupts线程T
4)特定的timeout到期,或多或少(就是线程T在timeout到期左右被唤醒)。如果timeout是0,那么这个时间参数将被忽略,它只能等到其它线程直接的notify。
然后线程T从该对象的等待列表中移除并重新启用线程调度(线程执行)。之后它就像其它线程一样来正常竞争该对象的同步权(同步锁);一旦它获得了该对象的控制权,它所有的对该对象的同步化声明会被恢复原状——这就意味着:线程T回到了wait方法被调用前的状况。线程T从wait方法被调用的状态中恢复了过来。因此,从wait方法中恢复,该对象的同步状态(synchronization state)就基本和它调用wait之前的状态一致了。
如果当前线程在等待(waiting)时被其它线程中断(interrupted),那么会抛出一个InterruptedException。这个异常只有在该对象锁状态已经恢复到如上描述时才会抛出。
注意wait方法只把当前线程置于该对象(this object:调用wait的对象)的等待列表中,并放弃该对象的锁;其它被当前线程锁定的对象仍旧保持着锁状态直到线程等待(就是谁调用wait,那么当前线程就放弃调用对象的锁)。
这个方法只能被拥有该对象监听器的线程调用。参见notify方法描述来了解一个线程如何变成对象的监听者。

2.notify
唤醒一个在这个对象的监听器等待的线程。所有等待该对象的线程其中之一被选择唤醒。这个选择是任意的,在执行时决定。通过调用wait方法可以使一个线程处于等待对象监听器的状态。
被唤醒的线程直到当前对象放弃这个对象的锁之后才能被执行。这个被唤醒的线程会和其它活动线程(alive)一块竞争该对象的同步锁(就是该对象资源)。这就是说这个线程在成为该对象锁的下一个拥有权上既不优先也不落后。
这个对象只能被该对象监听器所有者线程调用。一个线程成为对象监听器所有者通过以下三种方式之一:
1)通过执行该对象的一个synchronized实例方法
2)通过执行用于同步对象的同步对象表达式块。
3)对于类类型的对象,通过执行那个类的一个同步的静态方法。
在一个时刻只有一个线程能拥有一个对象的监听。

notify和wait的具体使用例子参看这篇帖子:http://longdick.iteye.com/blog/453615

分享到:
评论

相关推荐

    J2ME水波倒影(CLDC1.1及CLDC1.0)

    J2ME平台实现的水波倒影效果,包含CLDC1.1和CLDC1.0两个版本

    BlackBerry系统属性

    本章介绍BlackBerry 系统属性,包括CLDC/MIDP/JTWI,MMAPI,PDAP,LAPI,SATSA,CHAPI,I18N,Bluetooth,...返回值:“CLDC-1.1” 3. microedition.profiles 属性:代表手机支持的MIDP 版本 返回值: “MIDP-2.1”

    j2me_cldc-1_1-fcs-src-winunix.rar cldc1.1源码

    j2me_cldc-1_1-fcs-src-winunix.rar cldc1.1源码

    CLDC.rar_javax.microedition

    迄今为止,我们知道 CLDC...CLDC API 实际上只是 J2SE 的一个子集,它包括 java.lang、java.io 和 java.util,另加一个新软件包 -- javax.microedition。我们将逐个来研究这些软件包,并突出显示每一个包中的重要的类。

    J2ME相关名词解释及概念阐述

    但有自己专用的扩展类函数库,如:javacard.*,javacardx.*。只支持boolean与byte两种JAVA基本类。定位在智能卡的应用上。 5、KVM(K Virtual Machine) J2ME的虚拟机 用来执行Spotlet或者MIDlet。不同版本的JAVA有...

    java源码:JAVA实现CLDC与MIDP底层编程的代码.rar

    java源码:JAVA实现CLDC与MIDP底层编程的代码.rar

    jcov:https:wiki.openjdk.java.netdisplayCodeToolsjcov

    OpenJDK JCov JCov开源项目用于收集与测试套件生产相关的质量指标。 为了方便在OpenJDK开发中验证回归测试的测试执行... JCov支持JDK 1.0和更高版本(包括JDK 14),CDC / CLDC 1.0和更高版本以及JavaCard 3.0和更高版

    MIPS目标平台CLDC的Java虚拟机移植.pdf

    MIPS目标平台CLDC的Java虚拟机移植

    cldc_1.1.jar

    辅助包,CLDC (Connected Limited Device Configuration,有限连接设备配置) 是为运行在资源非常有限的设备(例如寻呼机或者手机)上的J2ME应用程序制订的架构

    j2me复习要点,十分详细

    1.J2ME体系结构采用模块化...CLDC 规范中定义的4个包 java.io,java.lang,java.util与javax.microedition.io,提供Java语言和CLDC设备所支持的基本功能。应用对象: 手机、双向寻呼机、PDA等。 4. MIDP 所定义的其他包有

    编程语言发展史:Java语言的出现和发展

    * 嵌入式设备和移动设备:Java ME(Java Micro Edition),包括了MIDP、CDC和CLDC等技术。 * 图形用户界面:JavaFX、Swing等技术。 五、未来编程语言发展趋势 * 新兴编程语言的趋势和发展:Ruby语言、Go语言、Rust...

    Sun J2me Cldc 官方源码资料.rar

    Sun J2me Cldc 官方源码资料,Cldc 1.1版本资料,一个专门用于J2ME手机游戏的开发包,很多Java手机游戏开发者都会用到这个包。

    《三国战纪》Java手机版源码 文档.rar

     游戏支持需求:MIDP2.0,CLDC1.1  开发平台:J2ME eclipse3.2 wtk2.5 jdk1.6  【游戏中变量命名约定】  游戏常量约定:  游戏中有貂蝉,张飞,两位主角  敌人有长兵,短兵,探马,张辽四种类型的兵种。...

    QQ4.0......2610专用

    MicroEdition-Configuration: CLDC-1.1 MIDlet-Name: QQ4.0 for nokia MicroEdition-Profile: MIDP-2.0 MIDlet-Info-URL:http://wap.motoly.com MIDlet-Delete-Confirm:http://wap.motoly.com MIDlet-Description:...

    HQRReader_S40手机版V2

    相对于上一版本,本版本功能更加完善,识别效率更高。...2.屏幕分辨率240*320,支持CLDC1.1,MIDP2.0,支持Java应用程序扩展 使用方法: 将HQRReader.jar下载到手机存储卡中,直接打开HQRReader即可。

    Java CLDC MIDP底层编程实例源码.rar

    Java CLDC MIDP底层编程实例源码,收集自Sun官方的开源项目phoneME,J2ME游戏编程时你会用到,你可以由此进一步探讨JavaME在Java底层的实现,可能对新手有些难度。

    可以在cygwin下面编译通过的cldc kvm 1.1

    可以在cygwin下面编译通过的cldc kvm 1.1,编译步骤可以参考http://blog.csdn.net/chief1985/archive/2009/09/03/4517320.aspx

    java源码包---java 源码 大量 实例

    内容索引:JAVA源码,综合应用,J2me游戏,PNG,图形处理  这是个J2ME控制台程序,它能剔除PNG文件中的非关键数据段,减少文件大小从而达到压缩图片的目的。而图片的质量并不会受到损失。使用时候只需在控制台窗口执行...

    J2me Cldc 1.1 Sun官方源代码

    内容索引:JAVA源码,游戏娱乐,Cldc,MIDP J2me Cldc是Sun官方的一个用于J2ME手机游戏的开发包,很多J2ME开发者都会用到这个包。

    actorframe-cldc-1.3.1-sources.jar

    官方版本,亲测可用

Global site tag (gtag.js) - Google Analytics