多线程

Posted www-jasmine-com

tags:

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

一、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();
 }
}










































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

什么是多线程,多进程?

多线程和多进程模式有啥区别

多线程Java多线程学习笔记 | 多线程基础知识

java中啥叫做线程?啥叫多线程?多线程的特点是啥

c++ 多线程与c多线程有啥区别?

IOS多线程安全(线程锁)