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

java 多线程 线程安全

时间:2017-10-10 13:17:05      阅读:315      评论:0      收藏:0      [点我收藏+]

标签:同步   ticket   使用   read   while   closed   port   logs   close   

技术分享
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;

/**
 * Created by meicai on 2017/3/17.
 */
public class Hello {
    public static void main(String [] args) {
        Ticket ticket=new Ticket();
        Thread t1=new Thread(ticket);
        Thread t2=new Thread(ticket);
        t1.start();
        t2.start();
    }

}

class Ticket implements Runnable{
    private int num=10;
    @Override
    public void run() {
        sale();
    }
    public void sale(){
        while(num>0){
            try {
                Thread.sleep(10);
                System.out.println("卖第"+num+"张票"+Thread.currentThread().getName());
                num--;
            } catch (InterruptedException e) {
                e.printStackTrace();
            }

        }
    }
}
不安全的线程

技术分享

如图第6张票被不同的线程卖了,这样就出问题了。

技术分享
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;

/**
 * Created by meicai on 2017/3/17.
 */
public class Hello {
    public static void main(String [] args) {
        Runnable r=new Ticket();
        Thread t1=new Thread(r);
        Thread t2=new Thread(r);
        t1.start();
        t2.start();
    }

}

class Ticket implements Runnable{
    Object obj=new Object();
    private int num=500;
    @Override
    public void run() {
        sale();
    }
    public void sale(){
        //使用同步代码块来防止出现安全问题
        synchronized (obj) {
            while (num > 0) {
                try {
                    Thread.sleep(10);
                    System.out.println("卖第" + num-- + "张票" + Thread.currentThread().getName());
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}
多线程 使用同步代码库保证安全

同步代码块保证了线程安全,效率低下,(使用了加锁机制)

 

java 多线程 线程安全

标签:同步   ticket   使用   read   while   closed   port   logs   close   

原文地址:http://www.cnblogs.com/caohuimingfa/p/7644594.html

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