App11_04_Thread子类数据共享

本文通过创建Thread子类实现三个模拟航班售票窗口的线程,展示多线程环境下共享资源的竞态条件问题。每个窗口独立售卖有限数量的机票,由于缺乏同步机制,导致同一张票被多次售出。
//创建一个Thread子类,模拟航班售票窗口 --每张票被卖了3次 不科学!
class ThreadSale extends Thread {
	private int tickets = 10;// 私有变量tickets 共享数据

	public void run() {
		while (true) {
			if (tickets > 0)// 如果有票可售
				System.out.println(getName() + " 售机票第" + tickets-- + "号");
			else
				System.exit(0);
		}
	}
}

public class App11_4 {// 主类
	public static void main(String[] args) {
		ThreadSale t1 = new ThreadSale();// 创建3个ThreadSale类的对象
		ThreadSale t2 = new ThreadSale();
		ThreadSale t3 = new ThreadSale();
		t1.start();
		t2.start();
		t3.start();
	}

}

我已经有一个类了,所以这样编写,内容如下,请帮我分析是否可以,忽略缩进格式: class SuperappUtils: def __init__(self, package, activity, auto_launch=False, driver=None): self.package = package self.activity = activity self.auto_launch = auto_launch self._driver = driver self.monitor_active = False # 监控标志 self.monitor_thread = None # 监控线程对象 self.desired_caps = None def _check_app_screen(self, app_name, timeout=120): """监控线程主函数(私有方法)""" start_time = time.time() self.monitor_active = True while self.monitor_active: try: # 调用具体的检测方法(需在子类实现) screen_result = self.verify_screen(app_name) crash_result = self.check_app_crash(app_name) anr_result = self.check_app_anr(app_name) # 异常检测 if any([screen_result[1], screen_result[2], crash_result, anr_result]): print("检测到异常:黑屏/白屏/闪退/ANR") self._stop_monitor() return True # 超时检测 if time.time() - start_time > timeout: print("达到设置超时阈值,停止检测") self._stop_monitor() return False time.sleep(1.5) except Exception as e: print(f"监控过程中出现异常: {str(e)}") self._stop_monitor() return False def _start_monitor(self, app_name): """启动监控线程""" if not self.monitor_thread or not self.monitor_thread.is_alive(): self.monitor_thread = threading.Thread( target=self._check_app_screen, args=(app_name,), daemon=True ) self.monitor_thread.start() def _stop_monitor(self): """停止监控线程""" self.monitor_active = False if self.monitor_thread and self.monitor_thread.is_alive(): self.monitor_thread.join(timeout=5)
10-21
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值