由于才疏学浅,只能管理项目中的一个类似webservice 模块 API,这几天学java,就无聊吧项目的代码看了下。
实现很简单,就是一个观察者模式,但是经常down,不管怎么 先上代码吧。
1.是一个后台观察类,由于是API,要一直起着监听被观察者干完活没有
package test;
import java.util.Observable;
import java.util.Observer;
public class TestThread implements Observer{
private String name;
public TestThread(String name){
this.name = name;
}
public void init(){
System.out.println("this is init.....");
}
public static void main(String[] args) throws InterruptedException {
TestThread test = new TestThread("Task1");
test.init();
synchronized (test) {
test.wait();
}
}
@Override
public void update(Observable o, Object task) {
// TODO Auto-generated method stub
System.out.println("this is task name:"+(String)task);
}
}
当然是实现了 observer。 这个管理类 利用线程同步,的wait的方法,来获取后台的每个task
2.被观察者。
package test;
import java.util.Observable;
public class NotifyTestThread extends Observable{
private TestThread test = new TestThread("manager");
public void setComplement(TaskThread taskThread,String task){
this.addObserver(test);
this.setChanged();
this.notifyObservers(task);
}
}
被观察者继承 observable ,其中3个重要的方法,(1)加观察者(2)保存修改(3)通知观察者。这里 引进一个一个线程变量,后台的任务线程调用这个方法。每个线程结束或者怎么地,就调用这个被观察者类的方法,然后通知观察者来搞着搞那。
3.线程
package test;
import java.util.Random;
public class TaskThread extends Thread{
private NotifyTestThread notify = new NotifyTestThread();
private String task ;
public TaskThread(String task){
this.task = task;
}
public void run(){
try {
System.out.println("this is task:"+task);
this.sleep(new Random().nextInt(1000));
notify.setComplement(this,task);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) {
TaskThread thread1 = new TaskThread("task1");
TaskThread thread2 = new TaskThread("task2");
TaskThread thread3 = new TaskThread("task3");
thread1.start();
thread2.start();
thread3.start();
}
}
具体的线程任务类,哎 项目没有用Spring ,这就是伪代码。最后观察者一直在等后面的任务是不是完成,后面线程就做一个报告一个。。也算是学习了,
哎 这几天一直在学java,java水太深了。。。学了快一个月了!加油!!!!!另外,如果有人看到这个,谁能教我学那个持久层框架好。最近看hibernate 感觉太乱了。。。难道是老了么 学习能力下降了。。额 。。
分享到:
相关推荐
适用于java/C/C++等代码,源代码为java代码通过运行代码将代码输入程序框中D盘自动生成伪代码文件PseudoCode.txt。(注意:由于是简单代码只可适用于糊弄老师,实验报告等,不可用于学术研究)。
朴素贝叶斯伪代码,就是一般的伪代码,好好看看把
流程图和伪代码.doc流程图和伪代码.doc流程图和伪代码.doc流程图和伪代码.doc流程图和伪代码.doc流程图和伪代码.doc流程图和伪代码.doc流程图和伪代码.doc流程图和伪代码.doc流程图和伪代码.doc流程图和伪代码.doc...
JAVA开发项目软件工程课程设计图书借阅管理系统源代码JAVA开发项目软件工程课程设计图书借阅管理系统源代码JAVA开发项目软件工程课程设计图书借阅管理系统源代码JAVA开发项目软件工程课程设计图书借阅管理系统源代码...
\KMP 伪代码\KMP 伪代码\KMP 伪代码\KMP 伪代码\KMP 伪代码
在web数据挖掘中Apriori算法的伪代码,能够很容易改成c++等语言。
针对物业管理系统写的缴费模块伪代码,欢迎指导
实现pca压缩
介绍伪代码的使用 Usage of Pseudocode
分支定界伪代码.txt
用miktex2.9编写的A*算法的伪代码(xelatex格式),里面包含tex文件和生成的pdf文件。
latex Algorithms伪代码规范, 详细介绍了伪代码需要调用的包,以及修改algorithms的默认设置。阐述了原理
差分算法的伪代码,初学者很好的材料,讲解详细,适合初学者和老手留着不时翻看,浅显易懂,又可以按其思路编程
一. 生成器模板路径可以引用相关变量 如 ${basepackage}/${className}.java,根据该变量生成输出文件 二. 自动搜索某个目录所有模板文件,无需配置 三.代码生成器模板可以引用的相关变量 1. g.generateByTable(...
Algorithm2e is an environment for writing algorithms in L ATEX2e. An algorithm is defined as a floating object like figures. It provides macros that allow you to create different sorts of key words, ...
计算机图形学CohenSutherland裁剪算法伪代码,可以通过VS平台下的MFC实现。
此代码是用来注册新用户,添加个人信息的,当然不全,希望自己可以再添加一些属性。
【论文伪代码】Aurora 可 word 编辑 【论文伪代码】Aurora 可 word 编辑 【论文伪代码】Aurora 可 word 编辑
Java实现伪QQ项目
图形学算法(伪代码)