多线程

Java线程讲解

我爱IT资讯库   2021/02/21

一 线程的基本概念
线程是一个程序内部的顺序控制流.一个进程相当于一个任务,一个线程相当于一个任务中的一条执行路径.
多进程:在操作系统中能同时运行多个任务(程序)
多线程:在同一个应用程序中有多个顺序流同时执行
Java的线程是通过java.lang.Thread类来实现的
JVM启动时会有一个由主方法(public static void main(){})所定义的线程
可以通过创建Thread的实例来创建新的线程
每个线程都是通过某个特定Thread对象所对应的方法run()来完成其操作的,方法run()称为线程体
通过调用Thread类的start()方法来启动一个线程

二 线程的创建和启动
可以有两种方式创建新的线程:
第一种:
1.定义线程类实现Runnable接口
2.Thread myThread = new Thread(target); //target为Runnable接口类型
3.Runnable中只有一个方法:public void run();用以定义线程运行体
4.使用Runnable接口可以为多个线程提供共享的数据
5.在实现Runnable接口的类的run()方法定义中可以使用Thread的静态方法public static Thread currentThread();获取当前线程的引用

第二种:
1.可以定义一个Thread的子类并重写其run方法如:
class MyThread extends Thread {
public void run() {...}

}
2.然后生成该类的对象:
MyThread myThread = new MyThread();

三 线程控制的基本方法
isAlive():判断线程是否还"活"着
getPriority():获得线程的优先级数值
setPriority():设置线程的优先级数值
Thread.sleep():将当前线程睡眠指定毫秒数
join():调用某线程的该方法,将当前线程与该线程"合并",即等待该线程结束,再恢复当前线程的运行
yield():让出cpu,当前线程进入就绪队列等待调度
wait():当前线程进入对象的wait pool
notify()/notifyAll():唤醒对象的wait pool中的一个/所有等待线程




热门内容

css display:none和visibility:hidden和visible="false"区别

  如果在p的style中把visibility设为 hidden则p隐藏,但是它会占据空白空间,... ...

ASP.NET[1]

   有很多人学过ASP,用ASP做过网站,可是到ASP .NET环境下发现,变化真是太大了... ...

构建一个安全的软件系统时,可能遇到的风险及解决方案(未完)

随着汽车工业的发展,汽车早以不是那个由一堆零件组成的大机器,而是由机械和电子器件构成的整体系统。并且,这个... ...
VPS上安装ShadowSocks

VPS上安装ShadowSocks

shadowsocks 是一个轻量级隧道代理,用来穿过防火墙。 我的VPS机器安装的是CentOS系统、... ...

ResultSet 调用getString 抛出NullPointException问题的解决

在Java连接数据库时,有时候在ResultSet 调用getString (或其他类似的方法),有时候会抛出Nu... ...

浅谈OSIV与泛型DAO模式

open session in view  简称 OSIV 模式 在Hibernate中能更好的应... ...

数据库设计原理:数据建模的三个阶段

如果你在Google或者百度上搜索数据建模,相信可以搜索出很多关于数据建模的文章,但是你会发现其中绝大部分是理论、... ...

ajaxfileupload.js 文件上传

一,前台代码。 <input id="fileToUpload" type="... ...

ios的标志常量

1 dec 2 fixed 3 hex 4 internal 5 left 6 oct 7 right 8 scien ...

discuz删除垃圾帖子

有时候如果你的论坛被垃圾帖子占满后,会发现使用后台的删除功能还是有些慢, 我们需要先备份自己需要的帖子,然后进行下面的 ...

Hibernate的主配置文件hibernate.cfg.xml

1:hibernate的主配置文件的名字必须是hibernate.cfg.xml:   1.1:主配置文件主要分为三部分 ...

关于html base元素的使用

base元素可以用于设置页面嵌入的css文件或js文件链接的基地址。 例子: <h... ...

类型转换与强制转换

自动转换: 举一个例子:把一个小的东西放到一个大的盒子里,是件非常容易的事,不用做任何改变,在这里理解成自动转换。... ...

利用wxwidgets操纵word

最近在学习怎么用wxwidgets来操纵word,寻找之中发现MedeoSoftware,里面有很多wxwidgets的... ...

Python中的简单类型

整数 & 浮点数 整数有两种,分别是 int 和 long。其中 int 最大值是 2147483647... ...

JS-时间函数

/** * 日期范围工具类 */ var daterangeutil = (function () { /** ...
“大数据”信息平台 覆盖社区5000老年人

“大数据”信息平台 覆盖社区5000老年人

突然头疼脑热,身边没人照顾;电灯坏了、水管漏了,该找谁来帮忙修?菊园新区智慧养老项目搭建了一个为老综合服务平台... ...

在PHP中全局变量的使用详解

即使开发一个新的大型PHP程序,你也不可避免的要使用到全局数据,因为有些数据是需要用到你的代码的不同部分的。一些常见的全... ...

名称空间也可以自定义

名字空间的定义 名字空间除了系统定义的名字空间之外,还可以自己定义,定义名字空间用关键字namespace,使用名字空 ...
从量价变化中洞察主力意图

从量价变化中洞察主力意图

成份B指(399003.SZ) <script language="JavaScript" typ... ...
android 继承view类刷新页面【安卓进化十一】

android 继承view类刷新页面【安卓进化十一】

       最近做项目中发现,继承了view类的子类... ...

C# XmlSerializer 对象的Xml序列化和反序列化

    .Net程序执行时,对象都驻留在内存中;内存中的对象如果需要传递给其他系统使用;或者在... ...

hdu-1286找新朋友(欧拉函数,水题)

题目链接: 找新朋友 time limit: 2000/1000 ms (java/others)memory limi ...

java程序 处理 andrid本地帮助文档打开慢的方式

    下载本地的android自带sdk帮助文档由于有被墙的google地址,可以通... ...

RTTI学习笔记

翻看C++的书,对RTTI的讲解都很困惑,"你知道你的对象是哪个类吗","RTTI常用于调试和数据库程序"对这些讲... ...

使用axis2传输附件

服务端Service文件: import java.io.FileOutputStream; import jav... ...

sql server 的行转列

sql server中行转列在sql2005之后,sqlserver引入了pivot运算符,也即是可以旋转行为列,... ...
【Node.js基础篇】(九)使用readline模块实现Node.js的输入输出

【Node.js基础篇】(九)使用readline模块实现Node.js的输入输出

学C++的时候,有cout和cin,Java也有println和Scanner控件,Node.js也有如同... ...
iOS 应用支持4寸屏

iOS 应用支持4寸屏

iPhone 5出了,一大批应用要兼容新的分辨率,下载了Xcode 4.5,在官方那里找不到有关兼容新分辨... ...

循环执行oracle到mysql的迁移步骤及各种注意事项

改章节笔者在北京逛街的时候突然想到的...今天就有想写几篇关于循环执行的笔记,所以回家到之后就奋笔疾书的写出来发表了 ... ...