package com.admomo.scrape.util;import java.io.File;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.HashMap;
import java.util.Map;import com.acwoan.core.orm.DAOUtil;
import com.acwoan.core.util.StdLib;public class GuanliWeibo extends Thread {

long next;
Thread thread = new Thread();

//main方法入口
public static void main(String[] args){
int i = 3000;
Thread thread = new Thread();
GuanliWeibo guanli = new GuanliWeibo();
guanli.run();
try {
while(true){
thread.sleep(i);
System.out.println("main入口 循环调用notifyWait方面!");
guanli.notifyWait();
}
} catch (Exception e) {
// TODO: handle exception
}
}

public void run(){
try {
while (true) {

next = 30;
//同步锁
synchronized(this){
System.out.println("线程进入等待阶段!");
//进入等待阶段,以毫秒计算,等待时间差
thread.wait(next);
// function
uploadSinaWeibo();
}
}
}catch (Exception e) {
// TODO: handle exception
}
}

//启动run方面中的等待线程
public void notifyWait(){
synchronized(this){
thread.notify();
System.out.println("启动run方面中的等待线程");
}
}
}

解决方案 »

  1.   

    唯一想说的就是启用线程你应该调用start()方法。其他没什么好说的,也不懂你想问什么。
      

  2.   

    上面的程序 我是想通过main方法入口去调用两个方法,先调用run()执行后会被锁住 下面的uploadSinaWeibo();function就不执行了 然后在回到main入口中执行循环体,这时候就会停止3秒去执行一次guanli.notifyWait(); 然后guanli.notifyWait();在去执行thread.notify();启动等待线程,然后就专业nag循环的执行和循环的锁, 不知道我理解的对不对  请高人指点。
    我想实现的功能是这样的:比如从数据库查询一个时间数值出来,和系统时间对比,获取中间时间差,然后thread.sleep(睡眠时间差);在执行后面发送代码。  需要注意的是 数据库中的时间数据不是固定的 随时修改的,这个地方要一个循环包围,如果第二次查询数据库的时候找到一个时间和系统时间更为接近的,那么就要唤醒刚才睡眠的进程,换上最为接近的时间差。 相当于一个定时器 。 定时发送的功能  求接  谢谢各位
      

  3.   

    你看看线程知识的介绍呢,启动线程是要调用start()方法的,线程启动后会自动调用run方法
      

  4.   

    哦,我就是run()是线程的线程体 ,那个run()的调用不是我加上去的!
      

  5.   

    晕倒啊  我在notifuWait(){这里加了对象.start();了 照样执行了一次 main入口里面的输出,就没有了!!!}
      

  6.   

    启用线程你应该调用start()方法
      

  7.   

    你的代码很乱 我改了下 希望对你有帮助 建议 你没有理解线程 好好的看下线程相关的资料package com.admomo.scrape.util;public class Main { public static void main(String[] args) {
    int time=3000;
    GuanliWeibo guanliWeibo=new GuanliWeibo();
    new Thread(guanliWeibo).start();
    while(true){
    try {
    Thread.sleep(time);
    } catch (Exception e) {
    e.printStackTrace();
    }
    System.out.println("main入口 循环调用notifyWait方面!");
    guanliWeibo.notifyWait();
    }

    }}
    package com.admomo.scrape.util;public class GuanliWeibo implements Runnable{
    private static final String lockUpload="lockUpload";

    private int next=30;

    public int getNext() {
    return next;
    } public void setNext(int next) {
    this.next = next;
    } @Override
    public void run() {
    while (true) {
    //同步锁
    synchronized (lockUpload) {
    System.out.println("线程进入等待阶段!");
    // 进入等待阶段,以毫秒计算,等待时间差
    try {
    lockUpload.wait(next);
    // function
    //uploadSinaWeibo();
    } catch (Exception e) {
    e.printStackTrace();
    }

    }
    }
    } //启动run方面中的等待线程
    public void notifyWait() {
    synchronized (lockUpload) {
    lockUpload.notify();
    System.out.println("启动run方面中的等待线程");
    }
    }
    }