首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

一个线程中有多个方法,怎么让它执行完其中一个再去执行别的

2012-12-16 
一个线程中有多个方法,如何让它执行完其中一个再去执行别的rt一个线程里面有A(),B()两个方法,我现在两个方

一个线程中有多个方法,如何让它执行完其中一个再去执行别的
rt
一个线程里面有A(),B()两个方法,我现在两个方法同时调用了,然后,它就A方法执行一行,然后再执行B方法一行,然后A再执行一行,然后B再执行一行......


我AB两个方法里面操作了同一个对象,所以算法都被弄乱了,如何让它先执行完其中一个,再去执行另一个?
[最优解释]
楼主可以看看jdk1.5的Lock和Condition里面的线程控制


class BoundedBuffer {
   final Lock lock = new ReentrantLock();
   final Condition notFull  = lock.newCondition(); 
   final Condition notEmpty = lock.newCondition(); 

   final Object[] items = new Object[100];
   int putptr, takeptr, count;

   public void put(Object x) throws InterruptedException {
     lock.lock();
     try {
       while (count == items.length) 
         notFull.await();
       items[putptr] = x; 
       if (++putptr == items.length) putptr = 0;
       ++count;
       notEmpty.signal();
     } finally {
       lock.unlock();
     }
   }

   public Object take() throws InterruptedException {
     lock.lock();
     try {
       while (count == 0) 
         notEmpty.await();
       Object x = items[takeptr]; 
       if (++takeptr == items.length) takeptr = 0;
       --count;
       notFull.signal();
       return x;
     } finally {
       lock.unlock();
     }
   } 
 }


[其他解释]
楼主,何谓单线程!就是说只能串行执行,先执行完方法A才能执行方法B,如果A、B同时执行了,那就是多线程了。如果要对多线程同时操作某一方法加以限制,那就在方法前加个同步就OK了。
[其他解释]
把线程加锁。

你这应该是有多个线程同时调用造成的。
[其他解释]
表示我没看懂。。。。一个线程里面两个方法怎么一行一行的交替执行?
[其他解释]
假设第二个线程 two 需要在第一个线程 one 执行后完毕后,再执行。可以再线程two中:one.join();
[其他解释]
定义一个boolean类型的变量 boolean iaAover = false;
在A()方法体里,若执行完 isAover = true;
在B()方法体里,在执行前 先判断iaAover 的值 根据iaAover 的值判断要不要执行B()方法
[其他解释]
引用:
一个线程里面有A(),B()两个方法,我现在两个方法同时调用了,然后,它就A方法执行一行,然后再执行B方法一行,然后A再执行一行,然后B再执行一行


楼主自己说乱了吧?一个线程里面调用 A B 两个方法,必然只能先后串行的执行,不可能A一行B一行的。

你是希望能做到两个线程分别在AB里面每次执行一行?还是希望怎么滴效果?
------其他解决方案--------------------


开2个线程吧 一个线程处理一个方法
[其他解释]

引用:
如何让它先执行完其中一个,再去执行另一个?

你这个需求直接串行就行了,何必要并行?
[其他解释]
引用:
引用:一个线程里面有A(),B()两个方法,我现在两个方法同时调用了,然后,它就A方法执行一行,然后再执行B方法一行,然后A再执行一行,然后B再执行一行

楼主自己说乱了吧?一个线程里面调用 A B 两个方法,必然只能先后串行的执行,不可能A一行B一行的。

你是希望能做到两个线程分别在AB里面每次执行一行?还是希望怎么滴效果……


我在一个类里,写了AB两个方法,在A执行的时候,鼠标点击后,触发B执行,我断点试过,一下跳到A一下跳到B,这两个方法在一个类里面,应该是同一个线程在执行吧
[其他解释]
我表示楼主你这个需求还要多线程做什么捏
[其他解释]
搞了好几天,居然是因为,一个方法在main线程里执行,另一个方法在另一个线程里执行,

热点排行