文档章节

Java-线程(1)

本人慧星撞地球
 本人慧星撞地球
发布于 2016/07/15 11:13
字数 647
阅读 1
收藏 0

1、线程的基本概念

线程是一个程序内部的顺序控制流。一个进程(应用程序(任务))可以有多个线程。

Java中的线程是由java.lang.Thread类来实现的。

每个程序中的main方法都是一个线程(主线程)。如果想添加新线程可以通过创建Thread类的实例来实现。启动一个线程调用Thread实例的start()方法。整个新线程的操作内容都是在Thread类的实例的run方法中完成的。所以run()称为线程体。

其实在同一个时间点上,一个CPU只能支持一个线程运行。只是CPU运行速度很快,所以看起来像多个线程同时在执行。

2、线程的创建和启动

有两种创建线程的方法。一是定义的线程类实现Runable接口。并实现run()方法。二是继承Thread类,并重写里边的run()方法。run()方法是“线程体”。

注意:(1).因为java中的线程是由java.lang.Thread类实现的,即每一个Thread对象代表一个新线程,所以只要new一个Thread对象一个线程程就出现了。所以当用实现Runable接口这种方法创建一个线程时,必须new一个Thread对象出来,把实现了Runable接口类的实例当做参数传到thread中。

(2)启动新开辟的线程用start()方法。

(3)这两种方法应该首选实现Runnable接口的方式创建线程。因为接口可以同时实现多个,而类只能单继承。

3、线程的状态转换

4、线程的4种方法介绍

(1)Thread.sleep()静态方法。将当前线程睡眠并制定毫秒数。抛出Interrupted异常,当线程被中断的时候。

(2)join()。调用某线程的该方法,将当前线程和该线程“合并”,即等待该线程结束,再恢复当前线程的执行。

(3)yield()。让当前运行线程回到可运行状态,以允许具有相同优先级的其他线程获得运行机会。因此,使用yield()的目的是让相同优先级的线程之间能适当的轮转执行。但是,实际中无法保证yield()达到让步目的,因为让步的线程还有可能被线程调度程序再次选中。

(4)notify()/notifyAll()唤醒等待池中的一个/全部线程。

本文转载自:http://www.cnblogs.com/xdp-gacl/p/3633936.html

共有 人打赏支持
本人慧星撞地球
粉丝 0
博文 24
码字总数 10716
作品 0
朝阳
程序员
私信 提问
Thread(threadlocal)

1、简介 JDK 1.2的版本中就提供java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序,ThreadLocal并不是一...

开源中国首席碉堡了
2018/11/28
0
0
ThreadLocal的设计理念与作用

Java中的ThreadLocal类允许我们创建只能被同一个线程读写的变量。因此,如果一段代码含有一个ThreadLocal变量的引用,即使两个线程同时执行这段代码,它们也无法访问到对方的ThreadLocal变量...

whoisliang
2018/02/14
0
0
转:理解ThreadLocal

ThreadLocal是什么 早在JDK 1.2的版本中就提供java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序。 Th...

轮回今生
2012/10/26
0
0
Java中ThreadLocal的设计与使用

ThreadLocal是什么 ThreadLocal是什么呢?其实ThreadLocal并非是一个线程的本地实现版本,它并不是一个Thread,而是thread local variable(线程局部变量)。也许把它命名为ThreadLocalVar更...

DragonRace
2013/11/25
0
0
多线程——彻底理解ThreadLocal

ThreadLocal是什么   早在JDK 1.2的版本中就提供java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序。...

亚特兰缇斯
2015/03/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Redis客户端连接以及持久化数据

一、介绍 之前我们讲解了Redis的结构与指令,其实很简单,我也没有过多的讲解,这次我们讲解一下Redis连接客户端以及持久化方案。 1、上文中我们针对redis的数据操作都是在服务器中使用命令执...

编辑之路
12分钟前
0
0
分布式服务化系统一致性的“最佳实干”

1 背景 一致性是一个抽象的、具有多重含义的计算机术语,在不同应用场景下,有不同的定义和含义。在传统的IT时代,一致性通常指强一致性,强一致性通常体现在你中有我、我中有你、浑然一体;...

青梅煮酒论英雄
18分钟前
3
0
命令行查看.net core的版本

dotnet --version

笑丶笑
19分钟前
0
0
Linux 多版本python3、python2共存安装

封装docker包需要python3环境,系统自带python2,yum等程序依赖它,避免异常问题,达到共存,增加python3支持。具体如下: 1、依赖环境 yum -y install zlib-devel bzip2-devel openssl-deve...

悲喜世界
25分钟前
0
0
折腾Java设计模式之策略模式

博客原文地址 简介 在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。简单理解就是一组算法,可以互换,再简单点策略就是封装算...

大萌小路
35分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部