Java中多线程的使用!!

Posted 帝景金岸

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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增加了负担,降低了进程中线程的执行概率,容易引发线程安全问题,出现死锁现象。所有线程不是开的越多越好!


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

java中多线程安全性和同步的常用方法

Java中多线程编程--synchronized关键字

什么是JAVA的多线程?

Java 通用爬虫框架中多线程的使用

java中多线程产生死锁的原因以及解决意见

java中多线程的Thread类,怎么没有导入任何包就用呢?