需要以下步骤:
定义问题:主要是指“想开发什么样的程序”、“这个程序用来解决什么问题”。满足目标客户的要求是最重要的。
2 是否具有可行性:要对这个程序是否具有实用性、利益性、以及对技术和法律方面的要求,都进行考虑。
3 需求分析。弄清用户对软件系统的全部需求,编写需求规格说明书和初步的用户手册,提交评审。
4 开发阶段:设计、实现、测试,是开发时最为重要的三个步骤。这三个步骤需要把程序员自己的理解及想法,和客户的需求都要得到体现。
5 对程序的维护:维护相当于售后服务,这个非常重要。因为程序在运营时,可能遇到各种各样的突发事件,面对这些突发情况,必须要进行紧急的处理。维护包括四个方面"改正性维护、适应性维护、完善性维护、预防性维护"。
Java,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台的总称。用Java实现的HotJava浏览器(支持Java applet)显示了Java的魅力:跨平台、动态的Web、Internet计算。从此,Java被广泛接受并推动了Web的迅速发展,常用的浏览器现均支持Java applet。
ava分为三个体系JavaSE(Java2 Platform Standard Edition,java平台标准版),JavaEE(Java 2 Platform,Enterprise Edition,java平台企业版),JavaME(Java 2 Platform Micro Edition,java平台微型版)。
public class EatFood {
public EatFood()
{
Person p = new Person();
peatFood(new Apple());
peatFood(new Chicken());
peatFood(new Beef());
}
public static void main(String[] args)
{
new EatFood();
}
public class Person
{
public void eatFood(Food f)
{
Systemoutprint("Person is eating ");
fgotEaten();
}
}
interface Food
{
public void gotEaten();
}
class Apple implements Food
{
@Override
public void gotEaten()
{
Systemoutprintln("Apple");
}
}
class Chicken implements Food
{
@Override
public void gotEaten()
{
Systemoutprintln("Chicken");
}
}
class Beef implements Food
{
@Override
public void gotEaten()
{
Systemoutprintln("Beef");
}
}
}
在Java语言产生前 传统的程序设计语言的程序同一时刻只能单任务 *** 作 效率非常低 例如程序往往在接收数据输入时发生阻塞 只有等到程序获得数据后才能继续运行 随着Internet的迅猛发展 这种状况越来越不能让人们忍受 如果网络接收数据阻塞 后台程序就处于等待状态而不继续任何 *** 作 而这种阻塞是经常会碰到的 此时CPU资源被白白的闲置起来 如果在后台程序中能够同时处理多个任务 该多好啊!应Internet技术而生的Java语言解决了这个问题 多线程程序是Java语言的一个很重要的特点 在一个Java程序中 我们可以同时并行运行多个相对独立的线程 例如 我们如果创建一个线程来进行数据输入输出 而创建另一个线程在后台进行其它的数据处理 如果输入输出线程在接收数据时阻塞 而处理数据的线程仍然在运行 多线程程序设计大大提高了程序执行效率和处理能力
线程的创建
我们知道Java是面向对象的程序语言 用Java进行程序设计就是设计和使用类 Java为我们提供了线程类Thread来创建线程 创建线程与创建普通的类的对象的 *** 作是一样的 而线程就是Thread类或其子类的实例对象 下面是一个创建启动一个线程的语句
Thread thread =new Thread(); file://声明一个对象实例 即创建一个线程
Thread run(); file://用Thread类中的run()方法启动线程
从这个例子 我们可以通过Thread()构造方法创建一个线程 并启动该线程 事实上 启动线程 也就是启动线程的run()方法 而Thread类中的run()方法没有任何 *** 作语句 所以这个线程没有任何 *** 作 要使线程实现预定功能 必须定义自己的run()方法 Java中通常有两种方式定义run()方法
通过定义一个Thread类的子类 在该子类中重写run()方法 Thread子类的实例对象就是一个线程 显然 该线程有我们自己设计的线程体run()方法 启动线程就启动了子类中重写的run()方法
通过Runnable接口 在该接口中定义run()方法的接口 所谓接口跟类非常类似 主要用来实现特殊功能 如复杂关系的多重继承功能 在此 我们定义一个实现Runnable() 接口的类 在该类中定义自己的run()方法 然后以该类的实例对象为参数调用Thread类的构造方法来创建一个线程
线程被实际创建后处于待命状态 激活(启动)线程就是启动线程的run()方法 这是通过调用线程的start()方法来实现的
下面一个例子实践了如何通过上述两种方法创建线程并启动它们
// 通过Thread类的子类创建的线程 class thread extends Thread { file://自定义线程的run()方法 public void run() { System out println( Thread is running… ); } } file://通过Runnable接口创建的另外一个线程 class thread implements Runnable { file://自定义线程的run()方法 public void run() { System out println( Thread is running… ); } } file://程序的主类 class Multi_Thread file://声明主类 { plubic static void mail(String args[]) file://声明主方法 { thread threadone=new thread (); file://用Thread类的子类创建线程 Thread threado=new Thread(new thread ()); file://用Runnable接口类的对象创建线程 threadone start(); threado start(); file://strat()方法启动线程 } }
运行该程序就可以看出 线程threadone和threado交替占用CPU 处于并行运行状态 可以看出 启动线程的run()方法是通过调用线程的start()方法来实现的(见上例中主类) 调用start()方法启动线程的run()方法不同于一般的调用方法 调用一般方法时 必须等到一般方法执行完毕才能够返回start()方法 而启动线程的run()方法后 start()告诉系统该线程准备就绪可以启动run()方法后 就返回start()方法执行调用start()方法语句下面的语句 这时run()方法可能还在运行 这样 线程的启动和运行并行进行 实现了多任务 *** 作
线程的优先级
对于多线程程序 每个线程的重要程度是不尽相同 如多个线程在等待获得CPU时间时 往往我们需要优先级高的线程优先抢占到CPU时间得以执行 又如多个线程交替执行时 优先级决定了级别高的线程得到CPU的次数多一些且时间多长一些 这样 高优先级的线程处理的任务效率就高一些
Java中线程的优先级从低到高以整数 ~ 表示 共分为 级 设置优先级是通过调用线程对象的setPriority()方法 如上例中 设置优先级的语句为
thread threadone=new thread (); file://用Thread类的子类创建线程
Thread threado=new Thread(new thread ()); file://用Runnable接口类的对象创建线程
threadone setPriority( ); file://设置threadone的优先级
threado setPriority( ); file://设置threado的优先级
threadone start(); threado start(); file://strat()方法启动线程
这样 线程threadone将会优先于线程threado执行 并将占有更多的CPU时间 该例中 优先级设置放在线程启动前 也可以在启动后进行设置 以满足不同的优先级需求
线程的(同步)控制
一个Java程序的多线程之间可以共享数据 当线程以异步方式访问共享数据时 有时候是不安全的或者不和逻辑的 比如 同一时刻一个线程在读取数据 另外一个线程在处理数据 当处理数据的线程没有等到读取数据的线程读取完毕就去处理数据 必然得到错误的处理结果 这和我们前面提到的读取数据和处理数据并行多任务并不矛盾 这儿指的是处理数据的线程不能处理当前还没有读取结束的数据 但是可以处理其它的数据
如果我们采用多线程同步控制机制 等到第一个线程读取完数据 第二个线程才能处理该数据 就会避免错误 可见 线程同步是多线程编程的一个相当重要的技术
在讲线程的同步控制前我们需要交代如下概念
用Java关键字synchonized同步对共享数据 *** 作的方法
在一个对象中 用synchonized声明的方法为同步方法 Java中有一个同步模型 监视器 负责管理线程对对象中的同步方法的访问 它的原理是 赋予该对象唯一一把 钥匙 当多个线程进入对象 只有取得该对象钥匙的线程才可以访问同步方法 其它线程在该对象中等待 直到该线程用wait()方法放弃这把钥匙 其它等待的线程抢占该钥匙 抢占到钥匙的线程后才可得以执行 而没有取得钥匙的线程仍被阻塞在该对象中等待
file://声明同步的一种方式 将方法声明同步
class store {public synchonized void store_in(){… }public synchonized void store_out(){ … }}
利用wait() notify()及notifyAll()方法发送消息实现线程间的相互联系
Java程序中多个线程通过消息来实现互动联系的 这几种方法实现了线程间的消息发送 例如定义一个对象的synchonized 方法 同一时刻只能够有一个线程访问该对象中的同步方法 其它线程被阻塞 通常可以用notify()或notifyAll()方法唤醒其它一个或所有线程 而使用wait()方法来使该线程处于阻塞状态 等待其它的线程用notify()唤醒
一个实际的例子就是生产和销售 生产单元将产品生产出来放在仓库中 销售单元则从仓库中提走产品 在这个过程中 销售单元必须在仓库中有产品时才能提货 如果仓库中没有产品 则销售单元必须等待
程序中 假如我们定义一个仓库类store 该类的实例对象就相当于仓库 在store类中定义两个成员方法 store_in() 用来模拟产品制造者往仓库中添加产品 strore_out()方法则用来模拟销售者从仓库中取走产品 然后定义两个线程类 customer类 其中的run()方法通过调用仓库类中的store_out()从仓库中取走产品 模拟销售者 另外一个线程类producer中的run()方法通过调用仓库类中的store_in()方法向仓库添加产品 模拟产品制造者 在主类中创建并启动线程 实现向仓库中添加产品或取走产品
如果仓库类中的store_in() 和store_out()方法不声明同步 这就是个一般的多线程 我们知道 一个程序中的多线程是交替执行的 运行也是无序的 这样 就可能存在这样的问题
仓库中没有产品了 销售者还在不断光顾 而且还不停的在 取 产品 这在现实中是不可思义的 在程序中就表现为负值 如果将仓库类中的stroe_in()和store_out()方法声明同步 如上例所示 就控制了同一时刻只能有一个线程访问仓库对象中的同步方法 即一个生产类线程访问被声明为同步的store_in()方法时 其它线程将不能够访问对象中的store_out()同步方法 当然也不能访问store_in()方法 必须等到该线程调用wait()方法放弃钥匙 其它线程才有机会访问同步方法
lishixinzhi/Article/program/Java/gj/201311/27301
可以按照以下的步聚来解决问题:一
首先确认USB接口是不是好的
方法:你的U口上插U盘,USB鼠标之类的设备能不能到连上,如果可以的话,那说明不是USB口问题,你可以换一条打印机线,或者在电脑上换个U口试试
反之,就是主板的问题了,需要送修电脑主板二
再确认系统服务是否开启:方法:
在“我的电脑”上点右键“管理”-“服务和应用程序”-“服务”-在里面找到“Print
Spooler”这项服务,看它是否已启动,如果没有,点“启动”再把“启动类型”选为“自动”。如果这项服务启动失败,建议你重装系统。三
接着是检查打印机状态是否正常,方法如下:打开控制面板里的“打印机和传真”在里面找到你的打印机图标,看看它的状态是什么?1
如果是灰色的,那表示你的打印机和计算机没有通信,可参照第一条和第四条来找答案;2
如果状态是“暂停”的话,那就双击图标,在“打印机”菜单里在“暂停使用”上单击把前面的“对勾”去掉。3如果状态是“脱机”的话,那就双击图标,在“打印机”菜单里在“脱机使用打印机”上单击把前面的“对勾”去掉。
四
接下来是检查你的打印机联机主板或打印机连接线是否损坏:
方法:在“控制面把”里把打印机驱动和驱动相关软件全部卸载掉,然后将打印机的连接线(USB或并口线)接到电脑上,打开打印机电源,然后依次点击“开始菜单”-“设置”-打开“打印机和传真机”,在里面点右键“添加打印机”-下一步-选择第一项(注意,一定要选上“自动检测并安装即插即用打印机”)。如果能检测到打印机,那就表示你的打印机没有问题。反之,那就是打印机联机主板的问题了,需要送到维修站修了~~~~~~~~~~~~~~~~~~~~~如果以上能帮你解决问题,那么再告诉你个正确安装打印机驱动的步聚吧:首先是打印机驱动,如果你没有光盘的话,你可以到你的打印机品牌相关的网站下载。1连接打印机把打印机的电源线和数据线接连好,数据线是接电脑的(分USB接口和并口两种)。
2把打印机电源关闭,安装驱动光盘。驱动可在随机带的驱动盘中安装,也可以在相应的网站上下载。安装完驱动后或者在安程过程中提示打开打印机电源时,打开打印机。
3依次点击"开始"
菜单-“控制面板”-打印机和传真机-在里面找到新安装的打印机图标,将它设置成默认打印机。
以上就是关于开发JAVA应用程序有哪些步骤全部的内容,包括:开发JAVA应用程序有哪些步骤、用JAVA编写一个food吃东西的程序,至少吃三种东西、Java多线程程序设计初步入门等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)