码迷,mamicode.com
首页 > 编程语言 > 详细

多线程

时间:2018-10-21 17:50:55      阅读:143      评论:0      收藏:0      [点我收藏+]

标签:getname   dem   try   over   逻辑   stack   一个   todo   售票   

一、join方法易错点

不要在自己的线程中开启另一个相同线程,会造成无限循环。

二、synchronized常犯的逻辑错误(下面为一个售票程序,注释部分为错误用法)

public class SellTicketDemo implements Runnable{
    Object o = new Object();
    private int ticket=50;
 @Override
 public void run() {
//  synchronized (o) {
//   while(true){
//    try {
//     Thread.sleep(100);
//    } catch (InterruptedException e) {
//     // TODO Auto-generated catch block
//     e.printStackTrace();
//    }
//    if(ticket>0){
//     System.out.println(Thread.currentThread().getName()+"正在出售第"+ticket+"张票");
//         ticket--;
//    }
//   }
//    
//  }错误,直到卖完了才释放监视器的锁
 
   while(true){
    synchronized (o) {
    try {
     Thread.sleep(100);
    } catch (InterruptedException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }
    if(ticket>0){
     System.out.println(Thread.currentThread().getName()+"正在出售第"+ticket+"张票");
         ticket--;
    }
   }
    
  }
 }
    public static void main(String[] args) {
     SellTicketDemo s = new SellTicketDemo();
  new Thread(s, "1窗口").start();
  new Thread(s, "2窗口").start();
  new Thread(s, "3窗口").start();
 }
}

多线程

标签:getname   dem   try   over   逻辑   stack   一个   todo   售票   

原文地址:https://www.cnblogs.com/www-jasmine-com/p/9825673.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!