Java 多线程的基本概念
一、线程介绍
多线程同时运行时,单CPU系统实际上是分给每个线程固定的时间片,用这种方式使得线程“看起来像是并行的”。在多CPU系统中,每个CPU可以单独运行一个线程,实现真正意义上的并行,但是如果线程数多于CPU数目,每个CPU仍然采用分时间片的方式。

上图是线程状态转移图,稍微解释一下其中的几个点
1、阻塞状态,类似于自旋锁,当条件满足的时候,会立即试图抢占CPU
2、处于等待状态后,需要收到通知之后,从等待集合中出队,才具备了抢占CPU的条件
二、两种实现线程的方式
1、继承自Thread
class IphoneThread extends Thread {
public int iphone = 5;
public String user;
public IphoneThread(String str) {
user = str;
}
@Override
public void run() {
while (iphone != 0) {
iphone--;
System.out.println(user + " get one and left iphone num=" + iphone);
}
}
}
public class ThreadTest {
public static void main(String[] arg) {
IphoneThread t1 = new IphoneThread("Toms");
t1.start();
IphoneThread t2 = new IphoneThread("Jack");
t2.start();
IphoneThread t3 = new IphoneThread("Boom");
t3.start();
}
}
2、实现Runnable接口
class IphoneRunable implements Runnable {
public int iphone = 5;
@Override
public void run() {
while (iphone != 0) {
iphone--;
System.out.println(Thread.currentThread().getName()
+ " get one and left iphone num=" + iphone);
}
}
}
public class RunableTest {
public static void main(String[] arg) {
IphoneRunable runable = new IphoneRunable();
Thread t1 = new Thread(runable, "Toms");
t1.start();
Thread t2 = new Thread(runable, "Jack");
t2.start();
Thread t3 = new Thread(runable, "Boom");
t3.start();
}
}
参考资料:
《Java核心技术I 基础知识》
Java 多线程的基本概念的更多相关文章
- Java多线程涉及的概念(3)
Java多线程涉及的概念 在理解进程和线程概念之前首选要对并发有一定的感性认识,如果服务器同一时间内只能服务于一个客户端,其他客户端都再那里傻等的话,可见其性能的低下估计会被客户骂出翔来,因此并发编程 ...
- java多线程之 基本概念
一.线程的五种状态 1. 新建状态(New) : 线程对象被创建后,就进入了新建状态.例如,Thread thread = new Thread().2. 就绪状态(Runnable) ...
- JAVA 多线程和进程概念的引入
1.并发和并行 并行:指两个或多个时间在同一时刻发生(同时发生): 并发:指两个或多个事件在一个时间段内发生. 在操作系统中,安装了多个程序,并发指的是在一段时间内宏观上有多个程序同时运行,这在单 C ...
- Java多线程系列-基本概念
Java的线程基本用法 创建线程 创建线程的方法: 实现Runnable接口 首先我们查看Runnable接口的定义: package java.lang; @FunctionalInterface ...
- java多线程编程01---------基本概念
一. java多线程编程基本概念--------基本概念 java多线程可以说是java基础中相对较难的部分,尤其是对于小白,次一系列文章的将会对多线程编程及其原理进行介绍,希望对正在多线程中碰壁的小 ...
- Java多线程——<八>多线程其他概念
一.概述 到第八节,就把多线程基本的概念都说完了.把前面的所有文章加连接在此: Java多线程——<一>概述.定义任务 Java多线程——<二>将任务交给线程,线程声明及启动 ...
- Java 多线程详解(一)------概念的引入
这是讲解 Java 多线程的第一章,我们在进入讲解之前,需要对以下几个概念有所了解. 1.并发和并行 并行:指两个或多个时间在同一时刻发生(同时发生): 并发:指两个或多个事件在一个时间段内发生. 在 ...
- Java 多线程(一) 基础知识与概念
多线程Multi-Thread 基础 线程概念 线程就是程序中单独顺序的流控制. 线程本身不能运行,它只能用于程序中. 说明:线程是程序内的顺序控制流,只能使用分配给程序的资源和环境. 进程 进程:执 ...
- java锁与监视器概念 为什么wait、notify、notifyAll定义在Object中 多线程中篇(九)
在Java中,与线程通信相关的几个方法,是定义在Object中的,大家都知道Object是Java中所有类的超类 在Java中,所有的类都是Object,借助于一个统一的形式Object,显然在有些处 ...
随机推荐
- shell shift 使用一例
这段代码的作用是: 当输入 ./Export.sh 是将当前目录进行打包,当输入./Export.sh XX1 XX2 XX3 .... XXn 时,如果XXn存在,则依次将存在的目录进行打包,打包文 ...
- 我的Blog开张啦,欢迎大家赏脸
Blog开张,以后会慢慢更新工作.学习遇到的问题,总结一些经验,观众老爷们多多支持!!! ^_^
- 手动实现 KVO
来源:伯乐在线 - Jerry4me 链接:http://ios.jobbole.com/88828/ 点击 → 申请加入伯乐在线专栏作者 我的Github地址 : https://github.co ...
- Python练习题 027:对10个数字进行排序
[Python练习题 027] 对10个数字进行排序 --------------------------------------------- 这题没什么好说的,用 str.split(' ') 获 ...
- find the nth digit
Problem Description 假设:S1 = 1S2 = 12S3 = 123S4 = 1234.........S9 = 123456789S10 = 1234567891S11 = 12 ...
- org.apache.solr.common.util.ContentStream.java及其实现类
org.apache.solr.common.util.ContentStream.java 主要是获取文件,URL,字节数组,字符串等的数据流.主要方法又InputStream getStream( ...
- Android进阶笔记19:onInterceptTouchEvent、onTouchEvent与onTouch
1.onTouch方法:onTouch方法是View的 OnTouchListener借口中定义的方法,处理View及其子类被touch是的事件处理.当一个View绑定了OnTouchLister后, ...
- 自动备份并保存最近几天的SQL数据库作业脚本
DECLARE @filename VARCHAR(255) DECLARE @date DATETIME SELECT @date=GETDATE() SELECT @filename = 'G:\ ...
- iOS - UI - UIStepper
7.UIStepper //计数器控件 固定宽高 UIStepper * stepper = [[UIStepper alloc] initWithFrame:CGRectMake(100, 10 ...
- Unrecognized VM 'MaxMetaspaceSize
这个错误是因为 MaxMetaspace 元空间是java8的新参数,如所以java8以下的版本,jvm是不支持这个参数的.