多线程——同步代码块
来源:互联网 发布:网络销售工资一般多少 编辑:程序博客网 时间:2024/05/22 10:46
/*通过分析,发现,打印出0,-1,-2等错票。多线程的运行出现了安全问题。问题的原因:当多条语句在操作同一个线程共享数据时,一个线程对多条语句只执行了一部分,还没有执行完,另一个线程参与进来执行。导致共享数据的错误。解决办法:对多条操作共享数据的语句,只能让一个线程都执行完。在执行过程中,其他线程不可以参与执行。 Java对于多线程的安全问题提供了专业的解决方式。就是同步代码块。synchronized(对象){需要被同步的代码}对象如同锁。持有锁的线程可以在同步中执行。没有持有锁的线程即使获取cpu的执行权,也进不去,因为没有获取锁。火车上的卫生间---经典。同步的前提:1,必须要有两个或者两个以上的线程。2,必须是多个线程使用同一个锁。必须保证同步中只能有一个线程在运行。好处:解决了多线程的安全问题。弊端:多个线程需要判断锁,较为消耗资源,*/class Ticket implements Runnable{private int tick = 1000;Object obj = new Object();public void run(){while(true){synchronized(obj){if(tick>0){//try{Thread.sleep(10);}catch(Exception e){}System.out.println(Thread.currentThread().getName()+"....sale : "+ tick--);}}}}}class TicketDemo2{public static void main(String[] args) {Ticket t = new Ticket();Thread t1 = new Thread(t);Thread t2 = new Thread(t);Thread t3 = new Thread(t);Thread t4 = new Thread(t);t1.start();t2.start();t3.start();t4.start();}}
阅读全文
0 0
- 多线程——同步代码块
- 多线程(3)—同步代码块
- java多线程——同步方法和同步代码块
- Java_基础—多线程(同步代码块和同步方法)
- 多线程 同步代码块
- 多线程、同步代码块
- 多线程-同步代码块
- JAVA——多线程编程之同步:同步代码块与同步函数(二)
- 多线程三(同步代码块)
- 多线程安全问题----同步代码块
- java多线程㈡—线程安全问题(同步代码块or同步函数)
- 多线程(三)——多线程安全问题之同步代码块(Synchronized)
- 多线程——引入同步代码块解决窗口卖票产生负票的问题
- 多线程——用同步代码块解决经典储户银行存钱问题
- java中多线程安全问题产生&解决方案——同步代码块
- 毕向东讲解(摘)—5.多线程的安全问题(同步代码块)
- java多线程五:同步代码块
- Java多线程 3 同步代码块
- 链表翻转
- centos7安装mysql---mysql.cnf
- Ubuntu安装最新的Python 3.6版本
- 《人人都是产品经理》——第四章笔记
- C++中SIN的用法
- 多线程——同步代码块
- 使用递归来实现在循环链表里删除第一节点不是数字‘2’
- 去除底部“自豪地采用 WordPress”版权信息
- 数字图像处理中常用的插值方法
- Android布局layout属性
- centos安装python-devel
- 调用发布于IIS7的WebService权限不足问题的解决方法
- Spring事务的管理和传播特性
- eclipse自动提示的设置