多线程使用同步方法解决线程安全问题

仍然还是两个线程窗口卖票
当一次任务是在一个方法中完成的,那么我们可以将这个方法封装,即锁这个方法

如下是同步方法的代码;

/** * */
package com.yan;

/** * @author 雷雨 * */
public class TestThread {

	/** * @param args */
	public static void main(String[] args) {

		MyThread my1 = new MyThread("窗口一");
		MyThread my2 = new MyThread("窗口二");
		
		my1.start();
		my2.start();
	}

}
class MyThread extends Thread {
	private static TicketService ts = new TicketService();
	
	public MyThread(String name) {
		super(name);
	}

	public void run(){
		while(true) {
			if(ts.hasTicket()) {
				oneticketsale();
			}else {
				break;
			}
			
			
		}
	}
	//使用了同步方法的方式完成了线程
	public synchronized static void oneticketsale() {
		synchronized (ts) {
			if(ts.hasTicket()) {
				try {
					Thread.sleep(1000);
				} catch (InterruptedException e) {
					// TODO 自动生成的 catch 块
					e.printStackTrace();
				}
				System.out.println(Thread.currentThread().getName()+"卖出了"+ts.sale());
			  }
			
		
		}
	}
	
		
}


注意
在分离要锁着的方法块的代码的时候,要分析那些部分的代码是线程***享的.

全部评论

相关推荐

点赞 评论 收藏
分享
05-26 10:24
门头沟学院 Java
qq乃乃好喝到咩噗茶:其实是对的,线上面试容易被人当野怪刷了
找工作时遇到的神仙HR
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-02 17:28
25届每天都在焦虑找工作的事情0offer情绪一直很低落硬撑着面了一个岗位岗位有应酬的成分面试的时候hr给我出各种场景题问的问题比较犀利 有点压力面的感觉感觉有点回答不上来本来就压抑的情绪瞬间爆发了呢一瞬间特别想哭觉得自己特别没用没绷住掉眼泪了事后想想觉得自己挺有病的 真的破大防了
喜欢唱跳rap小刺猬...:我觉得没关系吧,之前有一次面试leader给我压力面,我顶住了压力,结果入职的时候发现组里氛围很差,果断跑路。其实从面试就能大概看出组的情况,面试体验好的组倒是不一定好,但是面试体验不好的组。。。就很难说
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务