多线程加锁

Posted yoyo198212

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多线程加锁相关的知识,希望对你有一定的参考价值。

package cn.mutipart.thd;

public class TicketTest {
    public static void main(String[] args) {
        String lock = "这是线程锁";
        Ticket t1  =new Ticket(lock);
        new Thread(t1).start();
        new Thread(t1).start();
    }
}

class Ticket implements Runnable{
    private int num  =100;
    public String lock ;
    public Ticket(String lock){
        this.lock = lock ;
    }
    public void sendTicket(){
        while(true){
            try {
                Thread.sleep(10);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            synchronized (lock) {
                if(num>0){
                    num--;
                    System.out.println("还剩下"+num+Thread.currentThread().getName());
                }else{
                    break ;
                }
            }
        }
    }

    @Override
    public void run() {
        sendTicket();
    }
}

 

以上是关于多线程加锁的主要内容,如果未能解决你的问题,请参考以下文章

基础数据类型多线程是否需要加锁

java多线程,多线程加锁以及Condition类的使用

多线程

基本数据类型在多线程的情况下是否需要加锁

关于java多线程任务执行时共享资源加锁的方式思考

java多线程——锁机制synchronized(同步方法)