【黑马程序员】多线程(一) 第十一天
05)线程运行状态
07)多线程(售票的例子。)/* * 需求:简单的卖票程序。 * 多个窗口同时卖票。 * * 同步代码块。 * synchronized(对象){ * 需要被同步的代码。 * } * 对象如同锁。持有锁的线程可以在同步中执行。 * 没有锁的线程,即使获取了CPU的执行权,也进不去,因为没有获取锁。 * * 同步的前提: * 1:必须要有两个或两个以上的线程。 * 2:必须是多个线程使用同一个锁。 * * 好处:解决了多线程的安全问题。 * 弊端:多个线程每次都要判断锁,较为消耗资源。 */public class ThreadMaiPiao_4 {public static void main(String[] args) {Ticket_4 t = new Ticket_4();//Thread t1 = new Thread(t);//3:通过Thread类建立线程对象。Thread t2 = new Thread(t);//4:将Runable接口的子类对象作为实际参数传递给Thread类的构造函数。Thread t3 = new Thread(t);Thread t4 = new Thread(t);t1.start();//5:调用Thread类中的start方法开启线程并调用Runable接口子类的run方法。t2.start();t3.start();t4.start();}}class Ticket_4 implements Runnable{//extends Thread//1:定义类实现Runable接口。private int ticket = 1000;Object obj = new Object();public void run(){//2:覆盖Runable接口中的run方法。while(true){synchronized(obj){//同步代码块。if (ticket > 0){System.out.println(Thread.currentThread().getName() + " Sela: " + ticket--);}else{return;}}}}}
附言:我是Java新人,如有错误的地方请指出。 每天学习一点点,纠错一点点,进步很大点。------- android培训、java培训、java学习型技术博客、期待与您交流! ----------