多线程初步

一、多线程基本概念

1.并发和并行

并行:在多个cpu中同时进行,任务不中断
并发:多个任务在一个cpu中切换执行,任务会中断(挂起、继续和终止)

2.进程和线程

进程:正在运行的软件

  • 独立性:进程是独立运行的基本单位,同时也是系统分配资源和调度的独立单位
  • 动态性:实质是程序的一次执行过程,进程是动态产生、动态消亡的。
  • 并发性:任何进程和其它进程一起并发执行
    线程:进程中的单个顺序控制流,是一条执行路径。
  • 单线程:一个进程中如果只有一条执行路径,则称为单线程程序。
  • 多线程:一个进程如果有多条执行路径,则称为多线程程序。

二、多线程的实现方式

1.集成Thread类的实现方式

  • 定义类集成Thread类

2.实现Runnable接口

  • 新建类MyRunnable实现Runnable接口
  • 重写run()
  • 创建 MyRunnable对象mr
  • 创建Thread对象,把MyRunnable对象作为参数传递进去t1 = new Thread(mr)//创建线程对象
  • t1.start();

3.Callable和Future

  • 定义类MyCallable实现Callable接口
  • 重写Object call(),返回值代表线程运行完毕之后的结果.
  • 创建MyCallable对象mc
  • 创建Future实现类对象 FutureTaskString> ft= new FutureTask<>(mc);

可以获取线程执行完毕之后的结果,并将ft作为参数传递给Thread对象

  • 创建Thread对象,t1 = new Thread(ft)//创建线程对象
  • t1.start();
  • 再调用get()方法,可以获得线程运算的结果

4.优劣比较

4.1实现接口的方式:

  • 扩展性强,实现接口的同时还可以继承其他类;
  • 编程复杂,不能直接使用Thread类中的方法。

4.2 继承Thread类的方式:

  • 编程简单,直接使用Thread类中方法;
  • 扩展性差,不能继承其它类。

三、常用方法

1名称设置

1.1 获取线程名称

getName(); 获取当前线程的名称。

  • 线程是有默认名的 Thread-编号,Thread-0

1.2设置名称

  • t1.setName(“线程1”);
  • 构造方法设置名称:自己创建的类重写父类带名称的构造方法。在构造方法里直接传入名称。

2.获取线程对象

2.1 当前线程

public static Thread Thread.currentThread();获取执行到这里的线程

2.2 线程休眠

public static void sleep(long time)线程休眠,单位为毫秒

    Thread.sleep(1000);//线程休眠1秒
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值