J2ME初识--JAVA基础
2010-05-11 13:56
316 查看
预习知识:①Java中包结构的关系②private、protected、defualt、public在不同的情况下的访问权限③要真正理解抽象类、抽象方法、继承的含义及其接口的属性的理解④有一定的模式设计概念:什么是单例设计模式、工程设计模式?⑤理解线成的正在执行过程(注意:Thread类在J2ME中没有stop()方法)⑥对输入输出的理解⑦有察看API的能力
1.JAVA中为什么要引入包的概念,主要原因是由于java跨平台的性质。
2.private修饰符用于设置类或类成员的访问权限仅为所属类的内部,protected修饰符用于设置类或类成员的访问权限仅为所属类及子类的内部,internal修饰符修饰的类或类成员的访问权限为同一程序集内部,public修饰符则为公共访问权限,对代码的访问没有任何限制。
作用域 当前类 同一package 子孙类 其他package
public √ √ √ √
protected √ √ √ ×
friendly √ √ × ×
private √ × × ×
3.抽象类一般作为公共的父类为子类的扩展提供基础,这里的扩展包括了属性上和行为上的。而接口一般来说不考虑属性,只考虑方法,使得子类可以自由的填补或者扩展接口所定义的方法,且抽象方法是必须实现的方法。
4.设计模式。工厂模式,策略,观察者模式,单件模式,模板方法模式,迭代器合成器,代理模式,状态模式等
5.J2ME线程。
在J2ME中,主要有以下三种方法实现多线程。
一、继承Thread类(java.lang.Thread)
通过编写线程类继承Thread类并重写Thread类中的run()方法实现线程,当线程对象被运行时候将会自动执行run方法中的实体内容,从而开辟一个单独的线程并运行起来。
如:
public class ThreadSimple extends Thread{ public ThreadSimple() { //constructor } public void run() { //run code entity } }
线程实例使用,直接创建对象并调用start()方法即可运行线程。
new ThreadSimple()。start();当执行start方法时候,将会自动运行run方法,但是执行start方法时候只做了一件事,就是将线程转化为可执行状态,然后等待操作系统进行调度并运行,因此无法保证线程能立即启动。在JAVA中,Thread类实现了Runnable接口,因此run方法是通过实现接口Runnable中的抽象方法。
二、直接实现Runnable多线程接口(java.lang.Runnable)
线程接口Runnable中只有一个抽象方法run,通过实现Runnable接口中的方法的类即可创建出有多线程特征的对象,但该对象并无法使其启动线程,需要作为参数并借助Thread的构造方法构造创建对象并调用start方法对线程进行启动。
如:
public class RunnablSimple implements Runnable{ public RunnableSimple() { //constructor } public void run(){ //run code entity } }
实现类型的对象使用:
RunnableSimple rs = new RunnableSimple(); new Thread(rs).start();
由此可见,以上两种方法都是通过Thread的start来启动线程的,实际上所有的线程操作都是封装在Thread这个类中,由Thread对象调用各种接口来控制线程。
J2ME中线程中主要方法:void setPriority(int newPriority),设置线程优先级,在操作系统中线程的调度是不确定性的,可以通过该方法设置相应线程的优先级别。
static void sleep(long millis) ,线程中静态方法,用于让线程进入休眠状态,执行该方法将会让线程在指定时间millis毫秒内休眠。
void start(),使现在进入可执行状态。
void run() ,线程执行主体。
void join(),等待该线程终止。
boolean isAlive(),用于判断线程是否出于Alive状态。
static void yield() ,尽量让其他线程先执行。
三、使用任务组合实现多线程
在J2ME中,同样具有JAVA中的任务处理组合类,他们分别为Timer和TimerTask,可以使用他们实现多线程,简单说就是定时实现任务。
Timer是JAVA中的一个定时器,可以实现在某一时间做某件事或者在某一时间段做某些事,分别通过方法schedule(TimerTask tt,long millis)和schedule(TimerTask tt,long start,long off)。
TimerTask是一个任务类,通过继承该类并覆盖方法run即可创建一个任务。
如:
public class TimerTaskS extends TimerTask{ public TimerTaskS(){ //constructor } public void run(){ //run code entity } }
任务调用:
Timer timer = new Timer();
//3秒钟后执行任务
timer.schedule(new TimerTaskS(),3000);
//3秒钟后执行任务并且之后每5秒钟执行一次
timer.schedule(new TimerTaskS(),3000,5000);
有此可见在使用计时任务可以达到实现线程的效果,分别执行不同的并发操作,通过Timer类对象来操作TimerTask对象,通过schedule方法来计时执行任务,在结束任务的时候,通常使用cancel()来实现。
通常情况下,在J2ME软件中我们通过手机按键来触发一系列相应的操作,在程序响应处理过程中较多会涉及网络操作、数据存储等相对消耗时间和资源的操作,而这些操作往往需要一定的时间才能完成,因此在处理按键响应过程中通常我们需要建立线程处理,避免程序出现死机现象。
public void commandAction(Command c, Displayable s) { if(c==do1Com){ //创建实现接口线程 new Thread(new RunnableSimple()).start(); } else if(c==do2Com){ //创建继承Thread线程 new ThreadSimple().start(); } else{ //创建任务线程 new Timer().schedule(new TimerTaskS(),3000,20); } }
6.输入输出。
1.JAVA中为什么要引入包的概念,主要原因是由于java跨平台的性质。
2.private修饰符用于设置类或类成员的访问权限仅为所属类的内部,protected修饰符用于设置类或类成员的访问权限仅为所属类及子类的内部,internal修饰符修饰的类或类成员的访问权限为同一程序集内部,public修饰符则为公共访问权限,对代码的访问没有任何限制。
作用域 当前类 同一package 子孙类 其他package
public √ √ √ √
protected √ √ √ ×
friendly √ √ × ×
private √ × × ×
3.抽象类一般作为公共的父类为子类的扩展提供基础,这里的扩展包括了属性上和行为上的。而接口一般来说不考虑属性,只考虑方法,使得子类可以自由的填补或者扩展接口所定义的方法,且抽象方法是必须实现的方法。
4.设计模式。工厂模式,策略,观察者模式,单件模式,模板方法模式,迭代器合成器,代理模式,状态模式等
5.J2ME线程。
在J2ME中,主要有以下三种方法实现多线程。
一、继承Thread类(java.lang.Thread)
通过编写线程类继承Thread类并重写Thread类中的run()方法实现线程,当线程对象被运行时候将会自动执行run方法中的实体内容,从而开辟一个单独的线程并运行起来。
如:
public class ThreadSimple extends Thread{ public ThreadSimple() { //constructor } public void run() { //run code entity } }
线程实例使用,直接创建对象并调用start()方法即可运行线程。
new ThreadSimple()。start();当执行start方法时候,将会自动运行run方法,但是执行start方法时候只做了一件事,就是将线程转化为可执行状态,然后等待操作系统进行调度并运行,因此无法保证线程能立即启动。在JAVA中,Thread类实现了Runnable接口,因此run方法是通过实现接口Runnable中的抽象方法。
二、直接实现Runnable多线程接口(java.lang.Runnable)
线程接口Runnable中只有一个抽象方法run,通过实现Runnable接口中的方法的类即可创建出有多线程特征的对象,但该对象并无法使其启动线程,需要作为参数并借助Thread的构造方法构造创建对象并调用start方法对线程进行启动。
如:
public class RunnablSimple implements Runnable{ public RunnableSimple() { //constructor } public void run(){ //run code entity } }
实现类型的对象使用:
RunnableSimple rs = new RunnableSimple(); new Thread(rs).start();
由此可见,以上两种方法都是通过Thread的start来启动线程的,实际上所有的线程操作都是封装在Thread这个类中,由Thread对象调用各种接口来控制线程。
J2ME中线程中主要方法:void setPriority(int newPriority),设置线程优先级,在操作系统中线程的调度是不确定性的,可以通过该方法设置相应线程的优先级别。
static void sleep(long millis) ,线程中静态方法,用于让线程进入休眠状态,执行该方法将会让线程在指定时间millis毫秒内休眠。
void start(),使现在进入可执行状态。
void run() ,线程执行主体。
void join(),等待该线程终止。
boolean isAlive(),用于判断线程是否出于Alive状态。
static void yield() ,尽量让其他线程先执行。
三、使用任务组合实现多线程
在J2ME中,同样具有JAVA中的任务处理组合类,他们分别为Timer和TimerTask,可以使用他们实现多线程,简单说就是定时实现任务。
Timer是JAVA中的一个定时器,可以实现在某一时间做某件事或者在某一时间段做某些事,分别通过方法schedule(TimerTask tt,long millis)和schedule(TimerTask tt,long start,long off)。
TimerTask是一个任务类,通过继承该类并覆盖方法run即可创建一个任务。
如:
public class TimerTaskS extends TimerTask{ public TimerTaskS(){ //constructor } public void run(){ //run code entity } }
任务调用:
Timer timer = new Timer();
//3秒钟后执行任务
timer.schedule(new TimerTaskS(),3000);
//3秒钟后执行任务并且之后每5秒钟执行一次
timer.schedule(new TimerTaskS(),3000,5000);
有此可见在使用计时任务可以达到实现线程的效果,分别执行不同的并发操作,通过Timer类对象来操作TimerTask对象,通过schedule方法来计时执行任务,在结束任务的时候,通常使用cancel()来实现。
通常情况下,在J2ME软件中我们通过手机按键来触发一系列相应的操作,在程序响应处理过程中较多会涉及网络操作、数据存储等相对消耗时间和资源的操作,而这些操作往往需要一定的时间才能完成,因此在处理按键响应过程中通常我们需要建立线程处理,避免程序出现死机现象。
public void commandAction(Command c, Displayable s) { if(c==do1Com){ //创建实现接口线程 new Thread(new RunnableSimple()).start(); } else if(c==do2Com){ //创建继承Thread线程 new ThreadSimple().start(); } else{ //创建任务线程 new Timer().schedule(new TimerTaskS(),3000,20); } }
6.输入输出。
相关文章推荐
- Java基础之初识Java
- JAVA基础——初识JAVA(一)(第一个java程序)
- 10001---JavaWeb开发基础--初识Tomcat
- java基础.集合.Set.初识
- java基础.集合.properties.初识
- Java基础复习:初识多态
- 初识Java (Java语言基础-运算符)
- java基础之jvm、jre、jdk、j2se、j2ee、j2me了解
- Java基础——初识过滤器
- Java基础学习——数组初识(1)
- Java基础(五)OOP面向对象之(一) 面向对象思想初识
- J2ME中需要的Java基础知识
- JAVA基础——初识JAVA(六)(数组,数组遍历,数组排序,数组常用方法、二维数组)
- 初识Java(Java语言基础-数据类型转换)
- java 基础知识一 初识java
- java基础知识之初识java之第二章
- java基础.集合.collection和arrys.初识
- JAVA 基础之初识JAVA
- java基础知识之初识java
- J2ME中需要的Java基础知识