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中的线程的主要内容,如果未能解决你的问题,请参考以下文章