您的位置:首页 > 编程语言 > Java开发

Java 多线程的基本概念

2015-11-18 23:03 399 查看

一、线程介绍

多线程同时运行时,单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 基础知识》
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: