多线程

 

程序(program):为了完成特定任务、用某种语言编写的一组指令的集合。是静态对象

进程(process):是程序的一次执行过程,或是正在运行的一个程序。动态过程:有它自身的产生、存在和消亡过程

线程(thread):进程可进一步细化为线程,是一个程序内部的一条执行路径

线程机制是在由执行程序表示的单一进程中创建任务

java实现多线程有四种方法:

  1⃣️继承Thread类

  2⃣️实现Runnable接口

  3⃣️实现Callable接口

  4⃣️使用ExecutorService来创建线程池、用Callable直接从线程池获取线程、用Future获取返回结果

线程的锁:

  一个对象里面如果有多个synchronized方法,某一时刻内, 只要一个线程去调用其中的一个synchronized方法了,其他的线程都只能等待, 换句话说,某一时刻内,只能有唯一一个线程去访问这些synchronized方法。

  锁的是当前对象this,被锁定后,其他线程都不能到当前对象的其它sqnchronized方法

//买票程序

public class ThreadDemo {

  public static void main(String[] args) {

  Ticket ticket = new Ticket();

  new Thread(new Runnable(){

    @Override

    public void run() {

      for(int i = 0;i<10000;i++){

      ticket.sale();

      }

    }

  },"张三").start();

  new Thread(new Runnable(){

    @Override

    public void run() {

      for(int i = 0;i<10000;i++){

      ticket.sale();

      }

    } 

  },"李四").start();

}

}

class Ticket{

private int ticket = 2000;

private final Lock lock = new ReentrantLock();

public void sale(){

lock.lock();

try {

if(ticket>0){

System.out.println(Thread.currentThread().getName()+"卖出了第"+ticket+"张票,"+"还剩"+(--ticket)+"张票");

}

} catch(Exception e){

e.printStackTrace();

}finally {

lock.unlock();

} 

}

}

 

posted @ 2017-04-23 01:26  仔#仔  阅读(226)  评论(0)    收藏  举报