使用线程运行两个函数

时间:2012-02-23 17:50:46

标签: java multithreading

我有一个名为Socket的类,它具有两个函数,例如func1和func2

fucn1() {
    while(true) {
        ...
    }
}

fucn2() {
    while(true) {
        ...
    }
}

我希望他们中的两个同时使用线程运行。我怎样才能做到这一点??

class socket implement Runnable {
    public void run() {
        func1();
        func2();
    }
}

在此代码中,只有第一个函数不是第二个执行。如何同时运行它们?

4 个答案:

答案 0 :(得分:2)

我的建议是:

而不是制作套接字Class Runnable, 创建两个Runnable个线程,如下例所示,并从那里调用您的函数。并从Socket类开始这两个主题。

class Socket{
    private void startThreads() {
          new Thread(new Th1()).start();
          new Thread(new Th2()).start();

    }
}
class Th1 implements Runnable {
    @Override
    public void run() {
        fucn1();
    }
}
class Th2 implements Runnable {
    @Override
    public void run() {
        fucn2();
    }
}

答案 1 :(得分:2)

你可以像这样同时运行它们:

// start a thread for func1
Thread t1 = new Thread(new Runnable() {
       public void run() { 
           func1();
       }
    });
 t1.start();

 // func2 will run in parallel on the main thread
 func2();

 t1.join(); // if you want to wait for func1 to finish.

你没有提供任何细节,所以我假设他们没有任何副作用。

答案 2 :(得分:0)

如果要同时运行这两个函数,则生成两个线程并在自己的线程中运行每个函数。

这正是线程的用途。

答案 3 :(得分:0)

您需要为此方案创建两个线程。

class socket implement runable
{
    boolean condition;

    public socket(boolean condition){
         this.condition = condition;
    }
    public void run()
   {
      if(condition == true){
            func1();
      }else{
           func2();        
      }
   }
}

Thread t1 = new Thread(new Socket(true));
Thread t1 = new Thread(new Socket(false));


  t1.start();
    t2.start();

除此之外,您需要在每个方法中产生控制权,以确保每个线程都能获得公平的运行机会。