码迷,mamicode.com
首页 > 编程语言 > 详细

java多线程快速入门(十)

时间:2018-11-25 16:12:16      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:tick   sys   代码块   tst   入门   class   art   rri   void   

synchonizd解决安全性问题

package com.cppdy;

class MyThread6 implements Runnable{

    private Integer ticketCount=100;
    private Object ob=new Object();
    
    @Override
    public void run() {
        while(ticketCount>0) {
            try {
                Thread.sleep(50);
            } catch (Exception e) {
                e.printStackTrace();
            }
            sale();
        }
    }
    
    public void sale() {
        synchronized (ob) {
            if(ticketCount>0) {
                System.out.println(Thread.currentThread().getName()+"卖出了第:"+(100-ticketCount+1)+"张票。");
                ticketCount--;
            }
        }
    }
}

public class ThreadDemo6 {

    public static void main(String[] args) throws Exception{
        MyThread6 mt = new MyThread6();
        Thread thread1 = new Thread(mt,"窗口1");
        Thread thread2 = new Thread(mt,"窗口2");
        thread1.start();
        thread2.start();
    }

}

线程安全问题产生的条件:要有两个线程以上;必须要对同一变量进行操作;必须代码块使用同一把锁

原理:一个拿到锁,其它线程进行等待;释放过后,其它线程才能访问,就是锁的竞争问题,也是死锁产生的条件

java多线程快速入门(十)

标签:tick   sys   代码块   tst   入门   class   art   rri   void   

原文地址:https://www.cnblogs.com/cppdy/p/10015585.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!