Java 多线程的基本概念
2015-11-18 23:03
399 查看
一、线程介绍
多线程同时运行时,单CPU系统实际上是分给每个线程固定的时间片,用这种方式使得线程“看起来像是并行的”。在多CPU系统中,每个CPU可以单独运行一个线程,实现真正意义上的并行,但是如果线程数多于CPU数目,每个CPU仍然采用分时间片的方式。上图是线程状态转移图,稍微解释一下其中的几个点
1、阻塞状态,类似于自旋锁,当条件满足的时候,会立即试图抢占CPU
2、处于等待状态后,需要收到通知之后,从等待集合中出队,才具备了抢占CPU的条件
二、两种实现线程的方式
1、继承自Threadclass 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记录 -82- 静态导入 Static Import
- JAVA注解
- 1. Spring4.1-依赖注入
- java环境的搭建
- 细说 JavaBean
- struts返回json
- 杭电ACM1000,1001,1002 java解答
- Java transient关键字
- maven下搭建spring mvc
- eclipse mars离线 配置hibernate 插件心得
- 接口
- JAVA 日期加减
- 基于mmap的KV数据存储实现(一)概述
- Java连接mysql
- Java出现No enclosing instance of type E is accessible问题解决
- 抽象类
- java web 机试
- 第一次spring冲刺第7天
- final修饰符---final类