一、用于解决多线程安全问题的方式
synchronized:隐式锁
1)同步代码块 2)同步方法
jdk1.5后
3)同步锁 lock
注意:是一个显式锁,需要通过lock()方法上锁,必须通过unlock()方法进行释放锁。
1 public class testlock { 2 public static void main(string[] args) { 3 ticket ticket = new ticket(); 4 new thread(ticket, "1号窗口").start(); 5 new thread(ticket, "2号窗口").start(); 6 new thread(ticket, "3号窗口").start(); 7 } 8 } 9 10 class ticket implements runnable{ 11 private int tick = 100; 12 private lock lock = new reentrantlock(); 13 public void run() { 14 while(true){ 15 lock.lock(); //上锁 16 try{ 17 if(tick > 0){ 18 try { 19 thread.sleep(200); 20 } catch (interruptedexception e) { 21 } 22 system.out.println(thread.currentthread().getname() + " 完成售票,余票为:" + --tick); 23 } 24 }finally{ 25 lock.unlock(); //释放锁 26 } 27 } 28 } 29 }
如对本文有疑问, 点击进行留言回复!!
Mybatis中当实体类中的属性名和表中的字段名不一样时,如何解决
SQL中使用sum()应该程序报错:java.math.BigDecimal cannot be cast to java.lang.Integer
mybatis java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax;
网友评论