线程
package projict05; /*一:继承java.lang.Thread类 1.步骤: (1) 声明线程类,继承Thread (2)重写run方法 (3)创建对象 (4)启动线程 start() */ public class test27 { public static void main(String[] args) { //只有Thread类有start方法 MyThread my=new MyThread(); my.start(); MyThread my1=new MyThread(); my1.start(); } } class MyThread extends Thread{ @Override public void run() { for(int i=2;i<=100;i+=2) { System.out.println("偶数 "+i); } } }
package projict05; /*二:实现java.lang.Runnable类接口 * 1.步骤 * (1)声明线程类,实现Runnable接口 * (2)重写run() * (3)创建线程对象 * (4)启动:必须借用Thread类的start启动 * */ public class test28 { public static void main(String[] args) { MyRunnable my=new MyRunnable(); Thread thread=new Thread(my); thread.start(); Thread thread2=new Thread(my); thread2.start(); } } class MyRunnable implements Runnable{ @Override public void run() { for(int i=2;i<=100;i+=2) { System.out.println("偶数 "+i); } } }
package projict05; import org.junit.Test; /* (一)线程的生命周期 1.出生(new) 2.就绪(start) 3.运行 去向: (1)回到就绪: A:时间一到,回到就绪 B:yield() (2)死亡 A:异常,还未处理 B:run()正常结束 (3)阻塞 A:遇到耗时 B:sleep() C:wait() D:join() E:等待锁 4.阻塞 去向:就绪 A:遇到耗时----》耗时的操作准备好了 B:sleep()----》醒了 C:wait()----》wait条件排除 D:join()----》加到前面的线程结束了 E:等待锁----》释放锁 5.死亡:结束 * 方法: 1.getName() 2. 静态方法:Thread.currentThread() 3.getPriority() 4.静态方法:Thread.sleep() 5.join():让出资源 main 2 Thread-0 2 Thread-0 4 Thread-0 6 Thread-0 8 Thread-0 10 main 4 main 6 main 8 main 10 6.静态方法:Thread.yield():抢夺资源 main 2 Thread-0 2 main 4 Thread-0 4 main 6 Thread-0 6 main 8 main 10 Thread-0 8 Thread-0 10 JAVA 一共有10个优先等级1~10 Thread类一共定义三个基本优先等级,影响被调度的概率 MIN_PRIORITY:1 NORM_PRIORITY:5 MAX_PROORITY:10 */ public class test30 { @Test public void test03() throws InterruptedException { MyThread1 t1=new MyThread1(); t1.start(); for(int i=2;i<=10;i+=2) { if (i==4) { t1.yield();//抢夺资源 } System.out.println(Thread.currentThread().getName()+" "+i);//Thread-0 } } @Test public void test02() throws InterruptedException { MyThread1 t1=new MyThread1(); t1.start(); for(int i=2;i<=10;i+=2) { if (i==4) { t1.join();//线程被t1线程阻塞了 } System.out.println(Thread.currentThread().getName()+" "+i);//Thread-0 } } @Test public void test01() { MyThread1 t=new MyThread1(); t.start(); System.out.println(t.getName());//Thread-0 System.out.println(Thread.currentThread().getName());//main System.out.println(t.getPriority());//5 } } class MyThread1 extends Thread{ @Override public void run() { for(int i=2;i<=10;i+=2) { System.out.println(Thread.currentThread().getName()+" "+i);//Thread-0 } } }
posted on 2020-05-25 19:20 happygril3 阅读(149) 评论(0) 收藏 举报
浙公网安备 33010602011771号