JAVA 线程的介绍与使用
本篇博客: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 线程的介绍与使用相关推荐
- java线程详细介绍
目录(?)[-] 一扩展javalangThread类 二实现javalangRunnable接口 三Thread和Runnable的区别 四线程状态转换 五线程调度 六常用函数说明 使用方式 为什么 ...
- java线程池介绍(一)
ScheduledThreadPoo实现定时任务 class Temp extends Thread{ public void run(){ System.out.println("run& ...
- 大数据处理系列之(一)Java线程池使用
前言:最近在做分布式海量数据处理项目,使用到了java的线程池,所以搜集了一些资料对它的使用做了一下总结和探究, 前面介绍的东西大多都是从网上搜集整理而来.文中最核心的东西在于后面两节无界队列线程池和 ...
- JAVA线程池原理以及几种线程池类型介绍
在什么情况下使用线程池? 1.单个任务处理的时间比较短 2.将需处理的任务的数量大 使用线程池的好处: 1.减少在创建和销毁线程上所花的时间以及系统资源的开销 2.如不使用线程池, ...
- 一起学JAVA之【基础篇】4种默认线程池介绍
一起学JAVA之[基础篇]4种默认线程池介绍 默认线程池创建方式 java.util.concurrent 提供了一个创建线程池的工具类Executors,里面有四种常用的线程池创建方法 public ...
- java线程池有什么作用_java线程池的作用是什么?线程池介绍
你知道java中线程池的作用是什么吗?那么究竟什么是线程池呢?都有哪些类型呢?让我们对以上的问题来进行详细的了解吧. 一.java线程池作用 第一个我们先来对它的作用进行一下简单的介绍,使用线程池的优 ...
- java 线程组 历遍_Java并发之线程组ThreadGroup介绍
线程组介绍 线程组(ThreadGroup)简单来说就是一个线程集合.线程组的出现是为了更方便地管理线程. 线程组是父子结构的,一个线程组可以集成其他线程组,同时也可以拥有其他子线程组.从结构上看,线 ...
- Java 线程的6种状态(简单介绍)
关于Java线程的状态网上的说法不一,有的说是6种状态,有的说是5中状态,索性就查看了一下Java源码.Thread类里面有一个枚举类,如下: public enum State {NEW,RUNNA ...
- 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 ...
最新文章
- cas+shiro+spring 单点登录
- TCP/IP,Http,Socket的区别
- 我用hbuilder怎么用不了jquery_【权益资讯】机房电脑用不了怎么办
- python openoffice_windows下安装UNO,配置AEROO_REPORT (Openoffice4已经升级为Python2.7.5版)...
- 解决方案:the program can't start because mspdb100.dll is missing from your computer
- LeetCode 131. 分割回文串(回溯)
- NameNode所需配置,NameNode内存配置计算,NameNode与block关系
- mysql 5.6 利用gtid 同步数据遇到的问题记录
- Tomcat学习总结(16)—— Tomcat优化时的参数分析
- 【vue】vue +element 搭建项目,要求既支持pc端又支持移动端
- java开发工程师报名费多少_JAVA软件工程师资格证书 怎么考
- python画指北针_Python-geopandas 中国地图绘制
- LORD MicroStrain 惯性传感系统
- 文件搜索工具(简单版)
- R语言基础-Rstudio基本使用
- LIO-SAM回环检测模块代码解析
- Android 壁纸设置和确认
- 天命奇御单独破解补丁下载|天命奇御steam数字版单独破解补丁下载(附天命奇御反激活方法图文教学)
- 各种机械键盘轴的区别,我到底该用什么轴?
- cocos2dx3.2开发 RPG《Flighting》(五)只能行走的战斗场景
热门文章
- 遇到:ORA-27121: UNABLE TO DETERMINE SIZE OF SHAR...
- MongoDB索引案例一则
- 360容器平台监控实践
- spark的TimSort排序算法实现
- python制作窗口界面_python GUI库图形界面开发之PyQt5窗口背景与不规则窗口实例
- java正则表达式面试_【Java面试宝典】正则表达式
- Java实现视频网站的视频上传、视频转码、视频关键帧抽图, 及视频播放功能
- 多线程的那点事儿(之数据互斥)
- Golang程序性能分析(一)pprof和go-torch
- 面试题:为什么局部变量不赋初始值报错