Java支持多线程
JAVA 在语言级支持多线程。分配时间的仍然是OS。
一. 什么是线程:
线程是一个并发执行的顺序流,一个进程包括多个顺序执行流程,这种执行流程成为线程。线程是一个操作系统创建并维护的一个资源,对于操作系统来说Java虚拟机就是一个进程,对于单核的CPU的计算机来说某时刻只能有一个线程在运行。
一个Thread对象就表示一个进程。
线程有三部分组成:
(1). cpu费分配线程的时间片(cpu把某段时间分给一个线程,到时间后,其他线程执行)
(2). 线程代码(写在run()方法中)
(3). 线程数据
线程和进程的区别:
线程是独立的数据空间
进程是共享的数据空间
线程对象
线程对象存在于虚拟机对空间的一块连续的地址空间(静态)
线程与线程对象
线程是动态的,与线程对象是两回事。
线程对象能够像系统申请一个线程资源。
线程对象调用star()方法申请管理一个线程资源。
任务并发执行是一个宏观概念,微观上是串行的。
有两种线程的实现方式(或者叫有两种创建线程的方式):
第一种:创建一个类继承Thread类
class MyThreadA extends Thread{
//重写run()方法(写上想要执行的方法)
public void run() {
char d = 'A';
while(d<='Z') {
System.out.println("d= "+d);
for(int k=0; k<1000000; k++)
;//这样写可以实现空实现
d++;
}
}
//创建主方法(其实最好单独写个类)
public static void main(String[] args) {
//创建一个线程对象t1
Thread t1 = new MythreadA();
//执行此线程
t1.start();
}
}
第二种:创建一个类实现Runnable接口
class MyThreadB implements Runnable{
//重写run()方法(写上想要执行的方法)
public void run() {
char d = 'A';
while(d<='Z') {
System.out.println("d= "+d);
for(int k=0; k<1000000; k++)
;
d++;
}
}
public static void main(String[] args) {
Runnable target = new MyThread();
Thread t2 = new Thread(target);
t2.start();//启动线程
}
}
线程的七种状态: