编写多线程程序,模拟多个人通过一个山洞。

编写多线程程序,模拟多个人通过一个山洞。这个山洞每次只能通过一个人,每个人通过山洞的时间为2秒(sleep)。随机生成10个人,都要通过此山洞,用随机值对应的字符串表示人名,打印输出每次通过山洞的人名。提示:利用线程同步机制,过山洞用一条输出语句表示,该输出语句打印输出当前过山洞的人名,每个人过山洞对应一个线程,哪个线程执行这条输出语句,就表示哪个人过山洞。

public class gsd {
	public static void main(String []args){
	Shandong sd = new Shandong();
    Thread t1 = new Thread(sd, "赵");
    Thread t2 = new Thread(sd, "钱");
    Thread t3 = new Thread(sd, "孙");
    Thread t4 = new Thread(sd, "李");
    Thread t5 = new Thread(sd, "周");
    Thread t6 = new Thread(sd, "吴");
    Thread t7 = new Thread(sd, "郑");
    Thread t8 = new Thread(sd, "王");
    Thread t9 = new Thread(sd, "刘");
    Thread t10 = new Thread(sd, "张");
    t1.start();
    t2.start();
    t3.start();
    t4.start();
    t5.start();
    t6.start();
    t7.start();
    t8.start();
    t9.start();
    t10.start();
	}
}

class Shandong extends Thread{
	public void run() {
		synchronized(this){
        System.out.println(Thread.currentThread().getName()+"正在通过山洞;");
        try {
            sleep(2000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}
}


  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 好的,我来回答一下。编写一个多线程程序需要以下步骤: 1. 导入必要的库和模块,例如`threading`和`time`。 2. 创建一个线程类,继承`threading.Thread`类,并实现`run()`方法。 3. 在主程序中创建线程实例,并传入所需参数。 4. 调用线程的`start()`方法启动线程。 5. 在`run()`方法中编写线程所需的操作,可以使用`time.sleep()`方法模拟一些耗时的操作。 下面是一个简单的多线程程序示例,实现了两个线程同时执行,每个线程循环输出数字,并设置不同的延迟时间: ```python import threading import time class MyThread(threading.Thread): def __init__(self, name, delay): threading.Thread.__init__(self) self.name = name self.delay = delay def run(self): print("Thread", self.name, "started") for i in range(5): print("Thread", self.name, ":", i) time.sleep(self.delay) print("Thread", self.name, "finished") if __name__ == "__main__": t1 = MyThread("A", 1) t2 = MyThread("B", 2) t1.start() t2.start() t1.join() t2.join() print("All threads finished") ``` 在上述示例中,我们首先定义了一个`MyThread`类,继承`threading.Thread`类,实现了`run()`方法,在`run()`方法中实现了循环输出数字,并使用`time.sleep()`方法模拟了1或2秒的延迟。 在主程序中,我们创建了两个线程实例`t1`和`t2`,分别传入线程名称和延迟时间参数,并调用`start()`方法启动线程。 最后使用`join()`方法等待所有线程执行完成,然后输出"All threads finished"。 ### 回答2: 多线程是指程序中有多个线程同时运行。在多线程编程中,有时候需要传递参数给线程,让线程可以根据参数的不同执行不同的操作。 下面是一个简单的例子,演示如何编写一个多线程传参的程序: ```python import threading def print_message(message): # 线程要执行的操作 print(message) def main(): thread1 = threading.Thread(target=print_message, args=("Hello",)) # 创建线程1,并传递参数 thread2 = threading.Thread(target=print_message, args=("World",)) # 创建线程2,并传递参数 thread1.start() # 启动线程1 thread2.start() # 启动线程2 thread1.join() # 等待线程1结束 thread2.join() # 等待线程2结束 if __name__ == "__main__": main() ``` 在上述代码中,我们定义了一个`print_message`函数,用于打印传入的`message`参数。然后,我们创建了两个线程`thread1`和`thread2`,分别传递不同的参数。通过`target`参数指定线程要执行的函数,`args`参数用于传递参数给该函数。 在`main`函数中,我们启动线程1和线程2,并使用`join`方法等待它们的结束。 运行该程序,可以看到输出结果为: ``` Hello World ``` 这表明两个线程分别执行了带有不同参数的`print_message`函数,实现了多线程传参的目的。 ### 回答3: 编写一个多线程传参的程序可以使用Python的threading模块来实现。下面是一个示例代码: ```python import threading def worker(num): print("Worker %d started" % num) # 这里可以进行具体的任务处理 print("Worker %d finished" % num) if __name__ == "__main__": threads = [] # 创建并启动多个线程 for i in range(5): t = threading.Thread(target=worker, args=(i,)) threads.append(t) t.start() # 等待所有线程执行完毕 for t in threads: t.join() print("All workers finished") ``` 在这个例子中,我们定义了一个`worker`函数作为线程的任务函数,它接受一个`num`参数代表线程的编号。我们创建了5个线程,并将线程对象添加到一个列表中。然后,我们逐个启动线程,并等待所有线程执行完毕。 注意要使用`args`参数将参数传递给线程的任务函数,参数必须以元组的形式提供。 希望这个示例代码能帮助你编写多线程传参的程序
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

百无聊赖Zy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值