技术博客:第十三章多线程
并发:
1、宏观上:并发和并行相似,多任务;
2、微观上:一个CPU在做一件事,并没有实现并行,单任务;
并行:
在OS中:
进程:资源分配的最小单位,
线程:CPU调度的最小单位;
线程是进程的一部分!
多线程的实现:
1、继承Thread方法;本身就是实现Runable接口的类;
创建:
A extends Thread
在A中实现Run方法;
启动:利用继承自Thread 的Start()方法
A a = new A();
2、实现Runnable接口;不能自己运行,需要Thread来调用;
创建:
A implements Runnable;
在A中实现Run方法;
启动:
以A的对象为Thread的构造函数的参数创建Thread对象
并且利用他的Start()方法调度启用线程;
利用继承自Thread 的Start()方法
A a = new A();
Thread b = new Thread();
b.start();
3、使用Timer和TimerTask组合实现;
start方法,只有Thread方法中有
创建:
创建TImeTask子类;并实现Run方法得到线程任务类
Mytimwtask继承Timetask{
public void run(){}
}
启动:创建时钟器对象
利用时钟器对象的Schedule()方法启动线程任务;
Timer Timer = new Timer();
timer.schedule(new Mytimertask(),…………);
多线程的实现:
public class MyfristThread {
public static void main(String[] args) {
//MyThread1 n = new MyThread1();
//n.start();
//MyThread2 m = new MyThread2();
//Thread th = new Thread(m);
//th.start();
for(int i=0;i<10;i++){
System.out.println("男男女女");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
class MyThread1 extends Thread{
public void run(){
for(int i=0;i<10;i++){
System.out.println("爱你不会变");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
class MyThread2 implements Runnable{
public void run() {
for(int i=0;i<10;i++){
System.out.println("斤斤计较将");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
class MyThread3 extends TimerTask
public void run(){
for(int i=0;i<10;i++){
System.out.println("爱你不会变");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}