本篇博客:JAVA 线程的介绍与使用

线程的创建

线程是程序中的执行流。
一个执行流是CPU运行程序代码并操作程序的数据所形成的。
因此,线程被认为是CPU为主体的行为。
线程的创建共有两个方法

通过实现Runnable接口创建线程

实现步骤

(1)定义一个类实现Runnable接口,即在该类中提供run()方法的实现。
(2)把Runnable的一个实例作为参数传递给Thread类的一个构造方法,该实例对象提供线程体run()。

代码举例
public class ThreadTest {public static void main(String[] args) {Thread t1=new Thread(new Hello());Thread t2=new Thread(new Hello());t1.start();t2.start();}
}
class Hello implements Runnable{int i;public void run() {while(true) {System.out.println("Hello"+i++);if(i==5) break;}}
}
运行结果

(相同代码每次运行产生的结果可能会有所不同)
下面是某次运行的结果截图:

通过继承Thread类创建线程

实现步骤

(1)从Thread类派生子类,并重写其中的run()方法定义线程体。
(2)创建该子类的对象创建线程。

代码举例
public class ThreadTest2 {public static void main(String[] args) {// TODO Auto-generated method stubHello1 t1=new Hello1();Hello1 t2=new Hello1();t1.start();t2.start();}
}
class Hello1 extends Thread{int i;public void run() {while(true) {System.out.println("Hello"+i++);if(i==5)break;}}
}
运行结果

(相同代码在不同电脑可能出现的结果会存在不同)
下面是某次运行的结果截图:

线程常见的基本控制方法

1.sleep()
sleep()方法能够把CPU让优先级比其低的线程。该方法使一个线程运行暂停一段固定的时间。在休眠时间内,线程将不运行。
sleep()方法的格式:

static void sleep(int millsecond)//休眠时间以毫秒为单位
static void sleep(int millsecond,int nanosecond)//休眠时间是指定的毫秒数与纳秒数之和

2.stop()
当线程完成运行并结束后,将不能再运行。线程除正常运行结束外,还可以用其他方法控制使其停止运行。用stop()方法,强制终止线程。但是该方法的调用容易造成线程的不统一,因此不提倡采用该方法
3.isAlive()
有时线程的状态可能未知,用isAlive()测试线程以确定线程是否活着。该方法返回值为true意味着线程已经启动但还没有运行结束。

如有错误
欢迎指出

下一篇:用JAVA制作小游戏——飞机大战(一)

JAVA 线程的介绍与使用相关推荐

  1. java线程详细介绍

    目录(?)[-] 一扩展javalangThread类 二实现javalangRunnable接口 三Thread和Runnable的区别 四线程状态转换 五线程调度 六常用函数说明 使用方式 为什么 ...

  2. java线程池介绍(一)

    ScheduledThreadPoo实现定时任务 class Temp extends Thread{ public void run(){ System.out.println("run& ...

  3. 大数据处理系列之(一)Java线程池使用

    前言:最近在做分布式海量数据处理项目,使用到了java的线程池,所以搜集了一些资料对它的使用做了一下总结和探究, 前面介绍的东西大多都是从网上搜集整理而来.文中最核心的东西在于后面两节无界队列线程池和 ...

  4. JAVA线程池原理以及几种线程池类型介绍

    在什么情况下使用线程池? 1.单个任务处理的时间比较短      2.将需处理的任务的数量大 使用线程池的好处: 1.减少在创建和销毁线程上所花的时间以及系统资源的开销      2.如不使用线程池, ...

  5. 一起学JAVA之【基础篇】4种默认线程池介绍

    一起学JAVA之[基础篇]4种默认线程池介绍 默认线程池创建方式 java.util.concurrent 提供了一个创建线程池的工具类Executors,里面有四种常用的线程池创建方法 public ...

  6. java线程池有什么作用_java线程池的作用是什么?线程池介绍

    你知道java中线程池的作用是什么吗?那么究竟什么是线程池呢?都有哪些类型呢?让我们对以上的问题来进行详细的了解吧. 一.java线程池作用 第一个我们先来对它的作用进行一下简单的介绍,使用线程池的优 ...

  7. java 线程组 历遍_Java并发之线程组ThreadGroup介绍

    线程组介绍 线程组(ThreadGroup)简单来说就是一个线程集合.线程组的出现是为了更方便地管理线程. 线程组是父子结构的,一个线程组可以集成其他线程组,同时也可以拥有其他子线程组.从结构上看,线 ...

  8. Java 线程的6种状态(简单介绍)

    关于Java线程的状态网上的说法不一,有的说是6种状态,有的说是5中状态,索性就查看了一下Java源码.Thread类里面有一个枚举类,如下: public enum State {NEW,RUNNA ...

  9. java线程安全总结 - 1 (转载)

    原文地址:http://www.jameswxx.com/java/java%E7%BA%BF%E7%A8%8B%E5%AE%89%E5%85%A8%E6%80%BB%E7%BB%93/ 最近想将ja ...

最新文章

  1. cas+shiro+spring 单点登录
  2. TCP/IP,Http,Socket的区别
  3. 我用hbuilder怎么用不了jquery_【权益资讯】机房电脑用不了怎么办
  4. python openoffice_windows下安装UNO,配置AEROO_REPORT (Openoffice4已经升级为Python2.7.5版)...
  5. 解决方案:the program can't start because mspdb100.dll is missing from your computer
  6. LeetCode 131. 分割回文串(回溯)
  7. NameNode所需配置,NameNode内存配置计算,NameNode与block关系
  8. mysql 5.6 利用gtid 同步数据遇到的问题记录
  9. Tomcat学习总结(16)—— Tomcat优化时的参数分析
  10. 【vue】vue +element 搭建项目,要求既支持pc端又支持移动端
  11. java开发工程师报名费多少_JAVA软件工程师资格证书 怎么考
  12. python画指北针_Python-geopandas 中国地图绘制
  13. LORD MicroStrain 惯性传感系统
  14. 文件搜索工具(简单版)
  15. R语言基础-Rstudio基本使用
  16. LIO-SAM回环检测模块代码解析
  17. Android 壁纸设置和确认
  18. 天命奇御单独破解补丁下载|天命奇御steam数字版单独破解补丁下载(附天命奇御反激活方法图文教学)
  19. 各种机械键盘轴的区别,我到底该用什么轴?
  20. cocos2dx3.2开发 RPG《Flighting》(五)只能行走的战斗场景

热门文章

  1. 遇到:ORA-27121: UNABLE TO DETERMINE SIZE OF SHAR...
  2. MongoDB索引案例一则
  3. 360容器平台监控实践
  4. spark的TimSort排序算法实现
  5. python制作窗口界面_python GUI库图形界面开发之PyQt5窗口背景与不规则窗口实例
  6. java正则表达式面试_【Java面试宝典】正则表达式
  7. Java实现视频网站的视频上传、视频转码、视频关键帧抽图, 及视频播放功能
  8. 多线程的那点事儿(之数据互斥)
  9. Golang程序性能分析(一)pprof和go-torch
  10. 面试题:为什么局部变量不赋初始值报错