zoukankan      html  css  js  c++  java
  • 多线程---同步函数的锁是this(转载)

    class Ticket implements Runnable
    {
    private int tick = 100;
    Object obj = new Object();
    boolean flag = true;
    public void run()
    {
    if(flag)
    {
    while(true)
    synchronized(this)//注意这里的锁要一致
     //跟show()函数一样都是一个锁,show()锁是本身所以是this
     //同步的前提是:1、两个及其以上的线程;2、锁一样
    {
    if(tick>0)
    {
    try{Thread.sleep(10);}catch(Exception e){}
    System.out.println(Thread.currentThread().getName()+"同步代码块"+tick--);
    }
    }
    }else
    {
    while(true)
    show();
    }
    }
    public synchronized void show()//锁是this
    {
    if(tick>0)
    {
    try{Thread.sleep(10);}catch(Exception e){}
    System.out.println(Thread.currentThread().getName()+"同步函数...."+tick--);
    }
    }
    }
    class ThisLock
    {
    public static void main(String[] args)
    {
    Ticket t = new Ticket();
    Thread t1 = new Thread(t);
    Thread t2 = new Thread(t);
    t1.start();
    try{Thread.sleep(10);}catch(Exception e){}
    t.flag = false;
    t2.start();
    }
    }
  • 相关阅读:
    activiti--操作例子
    activiti--服务表
    spring--加载资源文件
    Day17
    Day15
    Day14
    Day13
    Day12
    Day16
    Day11
  • 原文地址:https://www.cnblogs.com/kevinfuture/p/4283891.html
Copyright © 2011-2022 走看看