线程的简介
进程:系统中资源分配以及资源调动的基本单位如qq 输入法等;
每一个进程都有很多个线程: 如QQ(进程):可以收发信息,播放音乐,查看网页,下载文件等(线程并发机制)
线程的运行方法:
举例: 比如,线程1 线程2 线程3 线程4
系统会给每个线程分配一个有限使用CPU的时间片,在这个时间片内先完成线程1中的一分部任务, 再跳到线程2中使用一个CPU时间片 完成一部分任务
依次类推,依次循环,由于CPU运行的时间比较快 所以给大家一种感觉好像是同时运行一样
**线程的特点:**
1.进程是资源分配的最小单位,线程是最小的执行单位
2.一个进程有多个线程
3.线程共享进程资源
实现线程的两种方式
- 1.Thread 类
语法:
Thread t = new Thread();
Thread t = new Thread(String name);String name: 自定义线程名:便于查找线程
方法:
run() 线程运行时执行的方法
start()使线程开始执行的方法
Thread.sleep(x) 线程休眠,x多少毫秒;
举例:
public class dome {
public static void main(String[] args) {
threada t = new threada();
threadb t1 = new threadb();
t.start();
t1.start();
}
}
class threada extends Thread{//线程1
public void run() {
super.run();
for(int i=0;i<100;i++) {
System.out.println(i);
try {
Thread.sleep(1000);//休眠(停顿)1秒钟,1000毫秒 等于1秒
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
class threadb extends Thread{//线程2
public void run() {
super.run();
for(char i='a';i<'z';i++) {
System.out.println(i);
try {
Thread.sleep(1000);//休眠(停顿)1秒钟,1000毫秒 等于1秒
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
Runnable接口
介绍:class Thread 线程的核心是run()方法,而与Thread同在Java.lang包下的还有一个可以代表并发线程的接口 lnterface Runnable 它也有run()方法
既然有Thread类了 为什么还要利用Runnable创建线程呢?
原因: 创建线程时,编写一个线程是继承了Thread类,那么就存在一个问题:这个线程类只能继承Thread类,不能继承其他类。所以为了解决这个问题
java就提供了这个并发接口Runnable接口 它可以继承任何父类。
语法:
Thread t = new Thread (Runnable obj);
t.start();