两个线程交叉打印(最简单的)

A:线程:

package Thread.a.b.turn;


public class ThreadA implements Runnable {
private ThreadBusiness treadMian =null;
public ThreadA(ThreadBusiness threadMain ){
this.treadMian=threadMain;
}


public void run() {
// TODO Auto-generated method stub


for(int i=0;i<10;i++){
treadMian.printA();
}
}


}

B线程:

package Thread.a.b.turn;


public class ThreadB implements Runnable {
private ThreadBusiness treadMian =null;
public ThreadB(ThreadBusiness threadMain ){
this.treadMian=threadMain;
}
public void run() {
// TODO Auto-generated method stub
for(int i=0;i<10;i++){
treadMian.printB();
}
}


}

业务逻辑:

package Thread.a.b.turn;


public class ThreadBusiness {
public boolean flag=true;



public synchronized void printA(){
if(!flag){
try {
wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
flag=false;
System.out.println("A");
notify();
}

public synchronized void printB(){
if(flag){
try {
wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
flag=true;
System.out.println("B");
notify();
}

}

测试:

package Thread.a.b.turn;


public class TestThreadAB {
public static void main(String args[]){
//先让A线程打印,后让B线程打印
ThreadBusiness threadMain = new ThreadBusiness();
Thread a = new Thread(new ThreadA(threadMain),"A"); 
Thread b = new Thread(new ThreadB(threadMain),"B");
a.start();
b.start();
}
}

希望大家赐教。

要在Qt中创建两个线程打印日志,你可以使用自定义的`QThread`类和信号槽机制。下面是一个示例代码,展示了如何在两个线程打印日志: ```cpp #include <QCoreApplication> #include <QThread> #include <QDebug> // 自定义的工作线程类 class WorkerThread : public QThread { Q_OBJECT public: void run() override { // 执行一些耗时的任务并打印日志 for (int i = 0; i < 5; ++i) { qDebug() << "Thread " << QThread::currentThreadId() << ": Working..." << i; msleep(1000); // 暂停1秒 } } }; int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); // 创建两个工作线程 WorkerThread thread1; WorkerThread thread2; // 启动两个线程 thread1.start(); thread2.start(); return a.exec(); } #include "main.moc" ``` 在上述代码中,我们首先定义了一个自定义的工作线程类`WorkerThread`,继承自`QThread`。在`run()`函数中,我们执行了一个简单的耗时任务,并在每次迭代中打印当前线程的ID和迭代计数。 在`main()`函数中,我们创建了两个`WorkerThread`对象`thread1`和`thread2`。然后,通过调用`start()`函数启动这两个线程运行这个示例代码后,你将看到两个线程交替打印日志,每秒打印一次,如下所示: ``` Thread 0x7f9d34002700 : Working... 0 Thread 0x7f9d30004700 : Working... 0 Thread 0x7f9d30004700 : Working... 1 Thread 0x7f9d34002700 : Working... 1 Thread 0x7f9d30004700 : Working... 2 Thread 0x7f9d34002700 : Working... 2 Thread 0x7f9d30004700 : Working... 3 Thread 0x7f9d34002700 : Working... 3 Thread 0x7f9d30004700 : Working... 4 Thread 0x7f9d34002700 : Working... 4 ``` 注意:每次运行线程的ID可能会有所不同。 希望这可以帮助你实现在两个线程打印日志!如果还有其他疑问,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值