zoukankan      html  css  js  c++  java
  • Java中多线程的使用!!

    简介:

          1.要了解多线程,首先我们得先了解进程和线程。那么什么是进程?进程就是一个正在运行的程序分配内存让应用程序能够运行的叫做进程。那么什么又是线程呢?线程:在一个程序中,负责代码的执行,就是一个进程中的执行路劲的称为线程。然而,在一个进程中,同时又多个线程在执行不同的任务时,我们就称为多线程。

            2.我们为什么要使用多线程呢?因为在一个进程中,有时候执行的任务,不仅仅只执行的是一个任务,有可能同时在执行多个任务,这时候我们就得用到多线程来解决这个问题!比如说售票,比如有三个窗口,同时在卖同一类型的50张票,窗口一卖了第50张,那么还剩49张,在卖第49张票的时候,有可能是第一个窗口卖出的第49 张票,也有可能是第二个窗口卖出的第49张票,也有可能是第三个窗口卖出去,所有这个时候我们就用到多线程来解决这个问题。那么按上面举的例子,我们怎么用代码来实现这个功能呢?

    代码实现 :

      

    class SaleTickets extends Thread{
            //设置总票数
            static int num = 50;
            static Object o = new Object();
            public SaleTickets(String name){
                     super(name);
            }
    
           //重写Thread的Run方法
           public void run() {
                  //用一个循环来模拟卖票的功能
                 while (true) {
                        //加锁
                        synchronized ("锁") {
                                  //为了更好的看到效果,让它睡眠0.5秒
                                 try {
                                       Thread.sleep(500);
                                 } catch (InterruptedException e) {
                                      e.printStackTrace();
                                 }
                       if (num > 0) {
                                 System.out.println(this.getName()+"卖了第"+num+"张票");
                                 num--;
                      }else {
                                System.out.println("票已经卖完");
                                break;
                      }
                     }
    
               }
         }
    
    }
    
    public class Demo2 {
    
            public static void main(String[] args){
                     SaleTickets s1 = new SaleTickets("窗口1");
                     s1.start();//开线程
                     SaleTickets s2 = new SaleTickets("窗口2");
                     s2.start();//开线程
                    SaleTickets s3 = new SaleTickets("窗口3");
                    s3.start();//开线程
    
            }
    
    }

    总结:

           使用多线程能帮我们解决一个进程中同时执行对个不同的任务,提高了资源的利用率。但是也给CPU增加了负担,降低了进程中线程的执行概率,容易引发线程安全问题,出现死锁现象。所有线程不是开的越多越好!

  • 相关阅读:
    [USACO07JAN]平衡的阵容Balanced Lineup
    洛谷 P4389 付公主的背包 解题报告
    多项式Ⅱ
    半平面交 板子
    Problem C Dist 解题报告
    二维凸包的板子
    洛谷 P4841 城市规划 解题报告
    广二模拟赛 Problem A: 青春野狼不做理性小魔女的梦 解题报告
    CF 997E 解题报告
    洛谷 P4244 [SHOI2008]仙人掌图 II 解题报告
  • 原文地址:https://www.cnblogs.com/WaJC2017/p/6129554.html
Copyright © 2011-2022 走看看