JAVA中的线程

Posted 格瑞斯儿

tags:

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

---恢复内容开始---

一、线程和进程

  线程:线程是计算中最小的执行单元。

  进程:进程是当前计算机中正在运行的程序。

  线程和进程的关系:每个进程中至少包含一个线程。

二、为什么需要多线程?

  当出现多个线程的时候,程序的执行流程将不再会是从左到右、从上到下的顺序了,有可能会出现各个线程之间的打扰,这时候就需要多线程了。

三、线程的状态之间的转化

四、Java多线程的创建以及启动

1、继承Thread类,重写该类的run()方法,以三个窗口卖票为例子。

  public class Demo{    public static void main(String[]args){


        TicketWindow tw1 = new TicketWindow();

        TicketWindow tw2 = new TicketWindow();

        TicketWindow tw3 = new TicketWindow();

        tw1.start();//将第一个线程启动

        tw2.start();//将第二个线程启动

        tw3.start();//将第三个线程启动

    }
    
}

class TicketWindow extends Thread{

    private  int ticket = 100;

    public void run(){

        while(true){
        
     synchronized(this){ //同步锁,这样就不会出现错票的情况
if(ticket>0){             System.out.println(Thread.currentThread().getName()+"正在售出第"+ticket--+"张票");//获取到是第几个线程在执行    }
      
       } } } }

 

2、实现Runnable接口,并且重写run()方法,当创建此线程类对象时,一个新的线程得以创建,并进入到线程新建状态。通过调用线程对象引用start()方法,就开启了一个线程。

 

public class Demo1 {
    public static void main(String[] args) {
        TT tt = new TT();//新建一个对象
        Thread tw1 = new Thread(tt);//创建一个线程
        Thread tw2 = new Thread(tt);
        tw1.start();//开启线程
        tw2.start();

    }

}

class TT implements Runnable {//继承Runnable接口
    private int ticket = 100;public void run() {
        while (true) {
            synchronized (this) {
                if (ticket > 0) {
                    try {
                        Thread.sleep(20);
                    } catch (Exception e) {
                    }
                    System.out.println(Thread.currentThread().getName()
                            + "当前卖出第" + ticket-- + "张票");
                }
            }
        }
    }

}

 

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

Java多线程与并发库高级应用-工具类介绍

Java多线程与并发库高级应用-工具类介绍

Java中的主线程与UI线程

LockSupport.java 中的 FIFO 互斥代码片段

java中的进程,线程,线程池总结

Java中通过Runnable与Thread创建线程的区别