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();
    }
    }
  • 相关阅读:
    HTTP——学习笔记(3)
    HTTP——状态码
    HTTP——学习笔记(2)
    HTTP——学习笔记(1)
    Sqlserver 存储过程
    Sqlserver 函数(例子)
    Sqlserver 函数
    sqlserver字段类型
    redis入门笔记(2)
    redis入门笔记(1)
  • 原文地址:https://www.cnblogs.com/kevinfuture/p/4283891.html
Copyright © 2011-2022 走看看