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

javase:线程基础

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

javase:线程基础

javase:线程基础
  • 线程引入
    • 进程与线程对比
  • 并发与并行
  • 异步和同步
  • 线程创建的步骤
    • 继承Tread类步骤 ThreadDemo.java
    • 实现Runnable接口 RunnableDemo.java

线程引入 进程与线程对比

1.进程:进程是系统进行资源分配和调度的一个独立单位。比如在一台电脑上能同时运行多个QQ
2.线程:线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。比如一个QQ中的多个聊天窗口
3.线程与进程之间对比分析
①线程与进程之间的关系

4.进程和操作系统之间的关系

5.进程与线程之间的区别
①一个程序至少有一个进程,一个进程至少有一个线程
②线程的划分尺度小于进程(资源比进程少),使得多线程程序的并发性高
③进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率
④线程不能够独立执行,必须依存在进程中
Ps:可以将进程理解为工厂中的一条流水线,而其中的线程就是这个流水线上的工人

并发与并行

1.串行:所有任务都一一按照先后顺序进行;是一次只能取得一个任务,并执行这个任务
2.并行:指在同一时刻,有多条指令在多个处理器上同时执行,所以无论从微观还是从宏观来看,二者都是一起执行的
3.并发:指在同一时刻只能有一条指令执行,但多个进程指令被快速的轮换执行,使得在宏观上具有多个进程同时执行的效果,但在微观上并不是同时执行的,只是把时间分成若干段,使多个进程快速交替的执行,如图所示:

异步和同步

1.同步:在发出一个功能调用时,在没有得到结果之前,该调用就不返回,也就是必须一件一件事做,等前一件做完了才能做下一件事
2.异步:当一个异步过程调用发出后,调用者不能立刻得到结果。实际处理这个调用的部件在完成后,通过状态、通知和回调来通知调用者
线程创建方式
1.继承Tread类
2.实现Runnable接口

线程创建的步骤 继承Tread类步骤 ThreadDemo.java

①子类继承Thread
②重写run()方法,并且将线程的功能书写在run方法内部
③创建一个线程对象,并且调用start()启动线程
注意:start()是启动线程,run()是方法调用

package ThreadDemo;

public class ThreadAPIExample {

    public static void main(String[] args) {

        //1.创建线程
        Thread1 t1 = new Thread1("线程1");//设置线程名字 = t1.setName("线程1");

        //设置线程优先级
        t1.setPriority(Thread.MAX_PRIORITY);
        //获取线程优先级
        System.out.println(t1.getPriority());

        //2.启动线程
        t1.start();

        //3.获取当前线程名字
        //String str = Thread.currentThread().getName();
        //System.out.println(str);//main

        //4.获取线程编号  返回值long型
        long i = Thread.currentThread().getId();
        System.out.println(i);

    }

}

class Thread1 extends Thread{

    public Thread1(){
    }

    public Thread1(String name){
        super(name);
    }

    @Override
    public void run(){
        while(true){

            //中断线程  运行中---->可运行
            Thread.currentThread().interrupt();
            //测试当前线程是否中断
            boolean b1 = Thread.currentThread().isInterrupted();
            //判断线程是否处于活动
            boolean b = Thread.currentThread().isAlive();
            //System.out.println(b);//true
            //System.out.println(b1);//true
            //System.out.println(Thread1.currentThread().getName()+"----t1----");
        }
    }
}
实现Runnable接口 RunnableDemo.java

①实现Runnable接口
②实现run()方法
③A创建线程
B创建线程资源
C产生实现Runnable()接口对象
D将产生线程资源对象
E作为thread类的参数,来产生线程对象
④启动线程

package ThreadDemo;

public class RunnableDemo {

    public static void main(String[] args) {

        //1.创建一个T2对象
        T2 t2 = new T2();

        //2.创建一个Thread对象
        Thread th = new Thread(t2);

        //3.启动线程
        th.start();

        //运行两个死循环
        T2 t1 = new T2();
        Thread th1 = new Thread(t1);
        th1.start();

    }

}

class T2 implements Runnable{

    @Override
    public void run() {
        while(true){
            System.out.println(Thread.currentThread().getName()+"-------");
        }
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/276795.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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