没太明白你的需求。不过如果每一个页面本身就是从一个单独的线程继承来的话,这样new一个页面本身也就是new了一个线程,不知道是不是能解决你的问题。按照我的理解来的,希望没理解错。

解决方案 »

  1.   

    你是不是想,当一个线程在处理的时候,另一个不处理,然后两个线程轮着来,但总也不回同时来是不?你可以用 sychronized 关键字来保护你的页面,这样,两个线程就不会同时操作了。 如果你不是很清楚具体怎么用sychronized,给我留言
      

  2.   

    我确实不懂synchronized,我的意思是这样
    线程:
    page_thread extends Thread{
    private Object object;
    private int page_order=1;//代表页面顺序号 .
    public synchronized int page_add()//每运行一个这样的线程,应该使得页面加1,以便下一个线程不会处理同一个页面.
    {
      page_order ++;
      return page_order;
    }
    public void run()
    {
     process page,//里面应该包括一个参数是第几页
    }
    }
    不知这样定义对不对,在主程序里又是怎么样调用这个page_add()呢?
      

  3.   

    thread.jion()
    等此现成运行完之后在运行下面的
      

  4.   

    楼主,我猜想你的意思是:你有很多个page,这些page可能是存在一个数组里面,或者是在一个LinkedList里面,然后你有多个线程在操作这个page数组,但每当一个线程从数组里取page的时候,你希望它取的是上一个线程操作的下一个page,是这样吗?方法如下:你可以先建立一个类来包装你的这些page (假设你已经有一个class Page)
    class Pages {
      private Page[] pages = new Page[10];//假设你只需要10个page
      private int pageCount = 0;
      public Pages(){/*在constructor里初始化pages数组的每个元素*/}
      // 下面这个method是关键
      public synchronized Page getPage(){
        System.out.println("Page Count: " + pageCount);
        return pages[pageCount++];
      }
    }class TestThreadA extends Thread{
      Pages pages;
      public TestThreadA(Pages pages){ this.pages = pages; }
      public void run(){
        Page p = pages.getPage();
        // do something on p  
    }class TestThreadB extends Thread{
      Pages pages;
      public TestThreadB(Pages pages){ this.pages = pages; }
      public void run(){
        Page p = pages.getPage();
        // do something on p  
    }
    // 下面这个class是示范你怎么用的
    public class Test{
      public static void main(String[] args){
        Pages pages = new Pages();
        TestThreadA a = new TestThreadA(pages);
        TestThreadB b = new TestThreadB(pages);
        TestThreadA aa = new TestThreadC(pages);
        a.start();
        b.start(); 
        c.start();
      }
    }在main里面新建了三个线程,你可以看这三个线程的类的定义TestThreadA和TestThreadB,这三个线程都试图从pages里取出一个page。 但由于在class Pages里,getPage()这个方法是sychronized,所以在任何时刻,只有一个线程可以调用getPage()这个方法。 这也就保证了只有当一个线程取完page以后,另一个线程才可以取page. 请记住: 取page的唯一方法只有调用getPage(),而这个方法不允许多个线程同时调用它。  所以这就解决了楼主的问题了不知道偶的理解时候正确