标签:显示 stack data current ack abi 同步锁 ext 线程



















xxxxxxxxxx/** * 功能:使用线程的注意事项 * 不论继承Thread或实现Rnunable接口都不能使用start启同一个线程2次 */public class Thread04 { public static void main(String[] args) { Cat cat1=new Cat(); cat1.start(); //cat1.start();同一个线程,不能启动2次 Dog dog1=new Dog(); Thread t=new Thread(dog1); t.start(); //t.start();同一个线程,不能启动2次 }}//猫类class Cat extends Thread{ public void run(){ System.out.println("11"); }}//狗类class Dog implements Runnable{ public void run(){ System.out.println("2"); }}
/** * 功能:使用线程的注意事项 * 线程并发同步锁synchronized(Object){}的使用 */public class Thread05 { public static void main(String[] args) { //定义一个售票窗口 TicketWindow tw1=new TicketWindow(); //使用三个线程同时启动 Thread t1=new Thread(tw1); Thread t2=new Thread(tw1); Thread t3=new Thread(tw1); t1.start(); t2.start(); t3.start(); }}//售票窗口类class TicketWindow implements Runnable { //共有2000张票 private int nums=2000; private Dog myDog=new Dog(); public void run() { while(true){ //出票速度是1秒出一张 try { Thread.sleep(1000); } catch (Exception e) { e.printStackTrace(); } //认为if else要保证其原子性 //先判断是否还有票 synchronized(myDog){//synchronized(this){}为同步代码块 if(nums>0){ //显示售票信息 //Thread.currentThread().getName()得到当前线程的名字 System.out.println(Thread.currentThread().getName()+"正在售出第"+nums+"张票"); nums--; }else{ //售票结束 break; } } } }}class Dog{}
标签:显示 stack data current ack abi 同步锁 ext 线程
原文地址:https://www.cnblogs.com/xuxaut-558/p/10045751.html