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

线程同步_synchronized

时间:2020-05-28 19:28:43      阅读:53      评论:0      收藏:0      [点我收藏+]

标签:getname   线程   java   turn   runnable   nts   str   extends   star   

//数据共享
package
projict05; import java.util.ArrayList; public class test31{ public static void main(String[] args) { TicketSaler t1=new TicketSaler("窗口一"); TicketSaler t2=new TicketSaler("窗口二"); t1.start(); t2.start(); } } class TicketSaler extends Thread{//只能单继承 private static TicketService ts=new TicketService();//静态 public TicketSaler(String name) { super(name); } public synchronized static void saleOneTicket() {//静态 if(ts.hasTicket()) {//用于安全检查 try { Thread.sleep(1); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(Thread.currentThread().getName()+ts.sale()); } } public void run() { while(ts.hasTicket()) { saleOneTicket(); } } } class TicketService { private ArrayList<String> all; public TicketService() { all=new ArrayList<String>(); for(int i=1;i<=100;i++) { all.add("ticket:"+i); } } public boolean hasTicket() { return all.size()>0; } public String sale() { return all.remove(0); } }
package projict06;

import java.util.ArrayList;

public class test32 {
    public static void main(String[] args) {
        MyRun my=new MyRun();
        
        Thread t1=new Thread(my,"窗口一");
        Thread t2=new Thread(my,"窗口二");
        
        t1.start();
        t2.start();
    }
}
class MyRun implements Runnable{//可实现多接口
    private TicketService ts=new TicketService();//非静态
    
    public synchronized  void saleOneTicket() {//非静态
        if(ts.hasTicket()) {//用于安全检查
            try {
                    Thread.sleep(1);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println(Thread.currentThread().getName()+ts.sale());
            }
    }
    public void run() {        
        while(ts.hasTicket()) {            
                saleOneTicket();
            }
        }        
    }
class TicketService {
       private ArrayList<String> all;
       
       public TicketService() {
           all=new ArrayList<String>();
           for(int i=1;i<=100;i++) {
               all.add("ticket:"+i);
           }
       }
       
       public boolean hasTicket() {
           return all.size()>0;
       }
       
       public String sale() {
           return all.remove(0);
       }
    }

 

线程同步_synchronized

标签:getname   线程   java   turn   runnable   nts   str   extends   star   

原文地址:https://www.cnblogs.com/hapyygril/p/12983196.html

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