文档章节

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
朝阳
程序员
私信 提问
[转]理解ThreadLocal

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

inferrrrrr
2009/11/03
0
0
java类ThreadLocal的理解

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

保罗的寓言
2011/05/21
0
1
说说 Java 的线程本地化对象容器(ThreadLocal)

JDK1.2+ 就已经提供了 java.lang.ThreadLocal 啦。可能很多小伙伴还不知道它,今天就让我们来说说它吧O(∩_∩)O~ ThreadLocal 是线程的本地化对象容器 。当在多线程环境中,使用 ThreadLoca...

deniro
11/10
0
0
ThreadLocal的那些事儿

什么是ThreadLocal? 顾名思义它是local variable(线程局部变量)。 它的功用非常简单,就是为每一个使用该变量的线程都提供一个变量值的副本,是每一个线程都可以独立地改变自己的副本,而...

陶邦仁
2012/09/07
0
2
从Java到JVM到OS线程的优先级

前言 Java 的线程的调度机制由 JVM 实现,假如有若干条线程,你想让某些线程拥有更长的执行时间,或某些线程分配少点执行时间,这时就涉及“线程优先级”。 优先级别 Java 把线程优先级分成1...

超人汪小建
06/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

AS连接网易Mumu模拟器

1、安装模拟器 打开这个网址现在模拟器然后安装 http://mumu.163.com/ 2、安装完成后启动模拟器 3、进入模拟器安装目录 例如本机的安装目录:C:\Program Files (x86)\MuMu\emulator\nemu\vmo...

HGMrWang
2分钟前
0
0
设计要做到扩展性强还挺难的

概述 在日常开发中,有时候你的上司会跟你说,这个模块的设计扩展性要高。把这句话说出来很简单,但是要做到则非常难。导致难的其中一个因素是: 你不熟悉这个行业的业务的玩法 我举个例子来...

Sam哥哥聊技术
4分钟前
0
0
聊聊 scala 的模式匹配

一. scala 模式匹配(pattern matching) pattern matching 可以说是 scala 中十分强大的一个语言特性,当然这不是 scala 独有的,但这不妨碍它成为 scala 的语言的一大利器。 scala 的 patt...

终日而思一
5分钟前
0
0
Spring事物手动回滚

手动回滚: 方法1:在service层方法的catch语句中增加:TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();语句,手动回滚,这样上层就无需去处理异常(现在项目的做法)...

寒风中的独狼
10分钟前
0
0
直角三角形的三角函数

sinA = a/c;A = asin(a/c); 特殊角度的三角函数值

一个小妞
18分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部