美文网首页
多线程1-简介

多线程1-简介

作者: StayHungriest | 来源:发表于2020-03-13 11:40 被阅读0次

一、进程与线程

进程与线程的区别
  1. 程序运行时,即使自己没有创建线程,后台也会存在多个线程,如gc线程。
  2. 线程对同一份资源操作时,会存在资源抢夺问题,要加入并发控制。
  3. 线程会有额外开销,cpu调度,并发控制开销。

二、三种创建方式

1. 继承Thread类

(1) 构造方法
Thread()
Thread(String name)
Thread(Runnable target)
Thread(Runnable target, String name)
Thread(ThreadGroup group, Runnable target)
(2) start()和run()
线程必须调用start(),加入调度器,此时不一定立即执行
直接调用run()不是开启多线程,是普通方法调用

2.实现Runnable接口

(1) 使用Thread类的构造方法传入
(2) 调用start方法

3. 实现Callable接口(可以获取线程执行结果)

(1) 创建目标对象: CDownloader cd =new CDownloader("图片地址","baidu.png");
(2) 创建执行服务: ExecutorService ser=Executors.newFixedThreadPool(1);
(3) 提交执行: Future<Boolean> result1 =ser.submit(cd1) ;
(4) 获取结果: boolean r1 =result1.get();
(5) 关闭服务: ser.shutdownNow();


实现Callable接口的类

更多参考:https://www.jianshu.com/p/c1199e0ded73
https://blog.csdn.net/tongdanping/article/details/79604637
https://blog.csdn.net/weixin_40304387/article/details/80508236

三、推荐使用Runnable接口

1. 摆脱单继承的局限性
2. 可以共享资源,一个实现Runnable的资源,多个线程执行

四、线程的状态

创建、就绪、运行、阻塞、结束

五、线程方法

1. sleep

使线程停止运行一段时间,将处于阻塞状态 ,如果调用了sleep方法之后,没有其他等待执行的线程,这个时候当前线程不会马上恢复执行

2. join

指定线程执行,当前线程要等到指定线程执行完。如:main方法中线程t.join(),这是t执行完后,main才继续。

3. yield

让当前正在执行线程暂停,不是阻塞线程,而是将线程转入就绪状态;调用了yield方法之后,如果没有其他等待执行的线程,此时当前线程就会马上恢复执行。

4. setDaemon

可以将指定的线程设置成后台线程,守护线程;创建用户线程的线程结束时,后台线程也随之消亡;只能在线程启动之前把它设为后台线程;一般用做操作日记、监控内存使用等,jvm不用等待守护线程执行完毕。

5. setPriority,getPriority

设置、得到线程优先级,1-10,默认5。

5. stop

停止线程,不推荐使用。


线程停止

相关文章

  • 多线程1-简介

    一、进程与线程 程序运行时,即使自己没有创建线程,后台也会存在多个线程,如gc线程。 线程对同一份资源操作时,会存...

  • 1-简介

    新建这个文集的目的很简单,想把我跟他之间的事情都记录下来。 可能也会记录听来的或者看来的一些男盆友吧,简称为别...

  • iOS开发进阶-实现多线程的3种方法

    相关文章链接:1.多线程简介2.实现多线程的3种方法(本文)......待续 前言 在多线程简介中,我已经说明过了...

  • iOS性能篇——并行开发其实很简单

    概览 1.多线程 1.1 简介 1.2 iOS 多线程 2.NSThread 2.1 解决多线程阻塞问题 2.2 ...

  • iOS多线程技术方案

    多线程技术方案 目录 一、多线程简介 1、多线程的由来 2、耗时操作的模拟试验 3、进程和线程 4、多线程的...

  • 多线程简介

    1、关于线程的概念 学习多线程,是为了将一些耗时操作放到后台,以提高用户体验。 进程进程可以理解成是系统中正在运行...

  • 多线程简介

    iOS系统 中,每一个应用都是一个进程。具体了解Runloop底层原理:https://www.jianshu.c...

  • 多线程简介

    内存模型 众所周之,Java是有个内存模型的,也就是堆区,栈区,本地方法区,方法区,程序计数器。其目的是为了让Ja...

  • 多线程简介

    iOS系统 中,每一个应用都是一个进程。具体了解Runloop底层原理:https://www.jianshu.c...

  • 多线程简介

    进程和线程 什么是进程? 可以简单的认为一个应用程序就是一个进程,不过有些应用程序会启动多个进程,即一个应用程序至...

网友评论

      本文标题:多线程1-简介

      本文链接:https://www.haomeiwen.com/subject/jwvfshtx.html