java中的同步关键字_Java中进程同步问题,锁 和synchronized 关键字的用法
標(biāo)簽:
?對象的鎖標(biāo)志
–每個(gè)對象都有一個(gè)鎖標(biāo)志
–使用synchronized可與鎖標(biāo)志交互
?synchronized關(guān)鍵字的用法有兩種:
–synchronized語句
–synchronized方法
?synchronized語句:
synchronized (obj){
//在synchronized語句塊中
//對obj的成員只能進(jìn)行同步訪問
}
/*? 一旦一個(gè)包含同步方法(用synchronized修飾)的線程被CPU調(diào)用,其他線程就無法調(diào)用相同對象的同步方法。當(dāng)一個(gè)線程在一個(gè)同步方法內(nèi)部,所有試圖調(diào)用該方法的同實(shí)例的其他線程必須等待*/
public class TicketSale implements Runnable {
private volatile int tickets = 50;
public int getTickets() {
return tickets;
}
public void setTickets(int tickets) {
this.tickets = tickets;
}
@Override
public void run() {
while(tickets >0){
saleTicket();
try {
Thread.sleep(10);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
private ?synchronized void ?saleTicket() {
if(tickets == 0 ){
return ;
}
System.out.println(Thread.currentThread().getName()+"正在賣出"+tickets--+"張票");
}
}
//Mian方法
package com.neuedu.chaptorHomeWork04;
public class TestMain {
public static void main(String[] args) {
Test1 t1 ?= new Test1(1,1000);
t1.start();
Test1 t2 ?= new Test1(1001,2000);
t2.start();
Test1 t3 ?= new Test1(2001,3000);
t3.start();
}
}
標(biāo)簽:
來源: https://blog.csdn.net/qq_35849955/article/details/82626698
總結(jié)
以上是生活随笔為你收集整理的java中的同步关键字_Java中进程同步问题,锁 和synchronized 关键字的用法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: cad考试题库绘图题答案_2019年低压
- 下一篇: php jquery 弹窗提示框,jQu
