我有一个名为Socket的类,它具有两个函数,例如func1和func2
fucn1() {
while(true) {
...
}
}
fucn2() {
while(true) {
...
}
}
我希望他们中的两个同时使用线程运行。我怎样才能做到这一点??
class socket implement Runnable {
public void run() {
func1();
func2();
}
}
在此代码中,只有第一个函数不是第二个执行。如何同时运行它们?
答案 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();
除此之外,您需要在每个方法中产生控制权,以确保每个线程都能获得公平的运行机会。