Java基础——线程总结

一、线程是什么?

线程:一个程序里不同的运行路径。

二、怎样创建线程?

两种方法创建线程:

第一种

(1)定义详细功能类实现Runnable接口,能够多次调用而实现数据共享

(2)Thread myThread = new Thread(…)          //參数为Runnable接口类型

(3)Runnable中仅仅有一个方法

      public void run(){……}                           //用以定义线程执行体

另外一种

(1)定义一个Thread的子类并重写run()方法

      class MyThread extends Thread {

      public void run(){……}

      }

(2)生成该类的对象

      MyThread myThread = new MyThread (…)

三、能够对线程做哪些控制?

方法

功能

bool isAlive(myThread Thread)

推断线程是否还“活”着,即线程是否还未终止。

int getPririty()

获得线程的优先级数值

void setPriority(int NewPriority)

设置线程的优先级数值

Thread.sleep(int sleepTime)

指定当前线程的睡眠时间(单位:毫秒)

void join()

将当前线程与上一主线程合并,即A线程的a()方法调用了B线程。则让B线程结束,再恢复A线程继续运行。

void yield()

让出CPU,当前线程进入就绪队列等待调度。

void wait()

当前线程进入对象的wait pool。

void notify()/void notifyAll()

唤醒对象的wait pool中的一个/全部等待线程。

四、辨析wait()与sleep()

之所以对这两个方法辨析,它们有个共同点——暂停线程的运行。但要说起它们的不同点。那还是挺多的。

不同点:

(1)Wait()是Object对象的方法;而Sleep(int sleepTime)是Thead()线程的方法。

(2)Wait()运行后,当前对象的锁就会被释放;而Sleep(int)运行后,锁仍然在其手中。

(3)Wait()不须要指定停留时间,须要notify()方法或notifyAll()方法将其唤醒;而Sleep(int),当中int指定睡眠的毫秒数,仅仅有在超过这个时间后。醒过来,当再次获得时间片之后,才干继续运行。

Java基础——线程总结的更多相关文章

  1. Java基础-线程安全问题汇总

    Java基础-线程安全问题汇总 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.内存泄漏和内存溢出(out of memory)的区别 1>.什么是内存溢出 答:内存溢出指 ...

  2. Java基础-线程操作共享数据的安全问题

    Java基础-线程操作共享数据的安全问题 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.引发线程安全问题 如果有多个线程在同时运行,而这些线程可能会同时运行这段代码.程序每次运 ...

  3. 《Java基础——线程类》

    Java基础--线程类       一.线程的创建之Thread类: 规则: 通过声明一个新类作为子类继承 Thread 类,并复写 run() 方法,就可以启动新线程并执行自己定义的 run()方法 ...

  4. JAVA基础—线程池

    推荐文章java多线程基础 线程池概述 为什么要使用线程池 1.服务器创建和销毁工作线程的开销很大 2.如果频繁的创建和销毁线程会导致频繁的切换线程,因为一个线程被销毁后,必然要把CPU转让给另一个已 ...

  5. java基础—线程(一)

    一.线程的基本概念

  6. java基础—线程(二)

    一.线程的优先级别

  7. Java基础--线程创建方式

    线程的创建主要有两种形式,通过继承Thread或者实现Runnable接口,本质上没有太大区别. /** * @date: 2019/7/16 **/ public class ThreadOne i ...

  8. Java基础-线程与并发1

    线程与并发 Thread 基本概念 程序: 一组计算机能识别和执行的指令 ,是静态的代码. 进程: 程序的一次运行活动, 运行中的程序 . 线程: 进程的组成部分,它代表了一条顺序的执行流. 进程线程 ...

  9. 面试题-Java基础-线程部分

    1.进程和线程的区别是什么? 进程是执行着的应用程序,而线程是进程内部的一个执行序列.一个进程可以有多个线程.线程又叫做轻量级进程. 2.创建线程有几种不同的方式?你喜欢哪一种?为什么? 有三种方式可 ...

随机推荐

  1. Did Pong Lie? (差分系统 判负环)

    Did Pong Lie? 时间限制: 5 Sec  内存限制: 128 MB提交: 68  解决: 15[提交][状态][讨论版] 题目描述 Doctor Pong has two arrays o ...

  2. 【Java多线程】线程池学习

    Java线程池学习 众所周知,Java不仅提供了线程,也提供了线程池库给我们使用,那么今天来学学线程池的具体使用以及线程池基本实现原理分析. ThreadPoolExecutor ThreadPool ...

  3. 数据库SQL归纳(三)

    数据查询功能 单表查询 选择若干列 1. 指定列 SELECT 列名称 FROM 表名称 2. 全部列 SELECT * FROM 表名称 3. 经过计算的列 SELECT Sname, 2019-S ...

  4. (疯狂java)第三课

    最近很忙,都没有看书,罪过... 第五章(面向对象上) 1.类是一种对数据结构的封装,也就是说,一个类在在理解上事存在实际的含义的,比如一个人类,人类也是个类,表明这个类不是家禽类,是有人的特点的生物 ...

  5. NServiceBus入门:发布事件(Introduction to NServiceBus: Publishing events)

    原文地址:https://docs.particular.net/tutorials/intro-to-nservicebus/4-publishing-events/ 侵删. 这个教程到目前为止,我 ...

  6. 利用tempo将json数据填充到html模板

    1.下载tempo 2.使用 <!DOCTYPE html> <html> <head lang="zn-ch"> <meta chars ...

  7. Oracle 11gR2 RAC 数据库不能连接(ORA-12537: TNS:connection closed)的解决

        Oracle 11gR2 RAC 数据库不能连接(ORA-12537: TNS:connection closed)的解决 [oracle@rac01 ~]$ sqlplus /nolog S ...

  8. Spring WebSocket入门(二) 转载

    本文转载自:http://www.jianshu.com/p/8500ad65eb50 WebSocket前端准备 前端我们需要用到两个js文件:sockjs.js和stomp.js SockJS:S ...

  9. jquery children()方法

    1.测试代码 <!DOCTYPE html> <html> <head> <script type="text/javascript" s ...

  10. Java9模块化(Jigsaw)初识

    Java9经历了多次跳票,终于要在9月份正式发布,原计划Jigsaw在Java7就有的,也终于在Java9里面提供了,简单总结下. 对比 Java9 以前 上面2个图分别对应的分别是JDK8/9的目录 ...