JAVA复习之线程

    科技2022-08-15  99

    一、线程

    二、线程的特点

    三、线程的生命周期

    四、Thread类

    Thread类是java.lang包中的一个类,Thread类的对象用来代表线程,通过继承Thread类创建、启动并执行一个线程的步骤:①创建一个继承Thread类的子类;②覆写Thread类的run()方法;③创建线程类的一个对象;④通过线程类的对象调用start()方法启动线程(启动之后会自动调用覆写的run()方法执行线程)。

    案例分析:

    public class Demo5 { public static void main(String[] args) { ThreadA threadA = new ThreadA(); threadA.start(); ThreadB threadB = new ThreadB(); threadB.start(); } } class ThreadA extends Thread{ public void run(){ for(int i=0;i<100;i++){ System.out.println(i); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } } } class ThreadB extends Thread{ public void run(){ for(char i= 'a';i<'z';i++){ System.out.println(i); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } } }

    五、Runnable接口

    六、线程的休眠

    七、线程的加入

    八、线程的中断

    九、线程的安全

    (一)案例之线程不安全,出现脏读

    public class Demo6 implements Runnable{ int num = 10; public static void main(String[] args) { Demo6 demo = new Demo6(); Thread t1 = new Thread(demo,"线程一"); Thread t2 = new Thread(demo,"线程二"); Thread t3 = new Thread(demo,"线程三"); Thread t4 = new Thread(demo,"线程四"); t1.start(); t2.start(); t3.start(); t4.start(); } @Override public void run() { while (true){ if(num>0){ System.out.println("票数:"+num--); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } } } }

    (二)线程同步机制synchronized关键字

    两种方法: 案例剖析:

    public class Demo6 implements Runnable{ int num = 10; public static void main(String[] args) { Demo6 demo = new Demo6(); Thread t1 = new Thread(demo,"线程一"); Thread t2 = new Thread(demo,"线程二"); Thread t3 = new Thread(demo,"线程三"); Thread t4 = new Thread(demo,"线程四"); t1.start(); t2.start(); t3.start(); t4.start(); } @Override public void run() { while (true){ synchronized (this){ if(num>0){ System.out.println("票数:"+num--); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } } } } }

    Processed: 0.027, SQL: 9