/**
* @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);
}
}
(JAVA)线程
最新推荐文章于 2024-05-01 09:15:00 发布