栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java线程基础

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java线程基础

  1. 什么是线程
    一条线程就是一组任务执行序列

  2. 什么是多线程
    某一时间段内并发多个任务执行序列

  3. 为什么需要多线程
    多线程可以“同时”运行多个任务。有更好的使用体验。

  • 开启一个线程,方式一
    要想开启一个新线程,在继承Thread类之后重写父类中的run方法。
    优点: 代码简单,适合编写匿名内部类的形式
    缺点:
    1. java代码单继承,不能继承其他类。
    2. 将这个线程直接固定,不能修改,增加了程序中的耦合性,不利于线程重用。
public class ThreadDemo1 {
    public static void main(String[] args) {
        MyThread1 t1 = new MyThread1();
        MyThread2 t2 = new MyThread2();
        //  开启线程使用start方法
        t2.start();
        t1.start();
    }
}

class MyThread1 extends Thread {
    @Override
    public void run() {
        for (int i = 0;i<1000;i++){
            System.out.println("你不是"+i);
        }
    }
}

class MyThread2 extends Thread {
    @Override
    public void run() {
        for (int i = 0;i<1000;i++){
            System.out.println("我是苍老师"+i);
        }
    }
}
  • 方法二. 实现java.lang.Runable接口
    这个接口实现类可以赋值给Thread对象当做线程执行的任务序列用
    优点:任务和线程对象分离,耦合性低。
    缺点:

      1. 需要额外的代码实例化任务对象,代码比较多
      2. 不继承Thread类,有些方法没有办法直接使用
    
public class ThreadDemo2 {
    public static void main(String[] args) {
        MyRunable1 r1 = new MyRunable1();
        MyRunable2 r2 = new MyRunable2();

        Thread t1 = new Thread(r1);
        Thread t2 = new Thread(r2);

        t1.start();
        t2.start();
    }
}

class MyRunable1 implements Runnable{
    @Override
    public void run() {
        for (int i = 0;i<1000;i++){
            System.out.println(1111111111);
        }
    }
}

class MyRunable2 implements Runnable{
    @Override
    public void run() {
        for (int i = 0;i<1000;i++){
            System.out.println(222222222);
        }
    }
}
  • 线程基本信息
public class ThreadInfoDemo {
    public static void main(String[] args) {
        Thread t = Thread.currentThread();

        String name = t.getName();
        System.out.println("线程名称"+name);

        long id = t.getId();
        System.out.println("线程唯一标识"+id);

        boolean isAlive = t.isAlive();
        System.out.println("是否或者"+isAlive);

        boolean isDAemon = t.isDaemon();
        System.out.println("是否是守护线程"+isDAemon);

        boolean isInterrupted = t.isInterrupted();
        System.out.println("是否中断");

        int pripority = t.getPriority();
        System.out.println("优先级"+pripority);

    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/350949.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号