/*** @author Alina* @date 2021年12月12日 11:37 下午* 线程:分为三个级别* 1.定义类,继承Thread 类,继承线程类* 该类重写run()方法* 创建子类对象* * 执行join方法的线程,会一次执行完毕,其他线程在争夺资源* * 线程休眠 :sleep 静态* * 线程的让步:yield 静态* * 线程的守护:setDaemond() 非静态* 最低:--->1* 默认:--->5* 最高:--->10* 2.定义类。继承runnable接口* 重写抽象方法run()* 创建thread 类的对象。Thread 构造方法中传递Runnable接口的实现类对象* 调用thread类的start方法* 利:实现接口,避免单继承的局限性* 实现接口,也可以共享数据* 弊:存在安全隐患,使用同步技术,保证线程安全* 共享数据,只有一个线程在运行* 关键字synchronized(任意对象){* 线程操作的共享数据* }******/
class TicketRunnable implements Runnable{private int ticker = 1 ;private Object obj = new Object();public void run() {synchronized (obj){while (ticker<100){try{Thread.sleep(20);}catch (Exception e){}System.out.println(Thread.currentThread().getName()+"no."+"...."+ticker);ticker++;}}}
}public class ThreadDemo {public static void main(String[] args) throws Exception{TicketRunnable tp = new TicketRunnable();Thread t0 = new Thread(tp);Thread t1 = new Thread(tp);Thread t2= new Thread(tp);t0.start();t1.start();t2.start();}public static void method_2()throws Exception{SubThread p0 = new SubThread();SubThread p1 = new SubThread();p0.start();p0.join();p1.start();for (int x=0;x<100;x++){Thread.sleep(100);Thread.yield();System.out.println(Thread.currentThread().getName()+"......"+x);}}public static void method_1(){PrioityThead pt = new PrioityThead();int x = pt.getPriority();System.out.println(x);//获取当前线程的优先级int y = Thread.currentThread().getPriority();System.out.println(y);}
}