1.多线程编程
1.1 线程的概念
- 多线程是指同一个程序同时存在几个“执行体”,它们可以 “同时”工作。
- 在早期的单核CPU上,这些执行体是轮流执行的,因为计算 机同一时刻只能执行一个线程,但是CPU执行速度是很快的, 通过快速轮转,给人感觉上是“同时”工作的。
- 现在的多核CPU上,可以实现真正的多线程并行执行
- 进程:一个程序的每一次运行称为一个进程,一个进程要占用一部分处理器时间和内存资源
- 线程:一个程序中多段代码同时并发执行,称为多线程。通过多线程,一个进程可以同时执行一个以上的任务(称为“并 发”)。 创建线程比创建进程开销要小得多,线程之间的协作和数据交换也 比较容易 。 一个进程可以包含多个线程,它们共享进程资源
- 主线程
继承Thread类
package test;class Kitty extends Thread{public void run(){for(int i=1;i<=50000;i++){if(i%10000==0)System.out.println("小喵喵叫");}}}
class Puppy extends Thread{public void run(){for(int i=1;i<=50000;i++)if(i%10000==0)System.out.println("小汪汪叫");}
}public class test
{public static void main(String args[]){Kitty k=new Kitty();Puppy p=new Puppy();k.start();p.start();for(int i=1;i<=50000;i++)if(i%10000==0)System.out.println("主人叫");}
}
主人叫
小汪汪叫
小喵喵叫
主人叫
小汪汪叫
小喵喵叫
主人叫
小汪汪叫
小喵喵叫
主人叫
小喵喵叫
小汪汪叫
小喵喵叫
主人叫
小汪汪叫
Runnable接口
package test;class Kitty implements Runnable{public void run(){for(int i=1;i<=50000;i++){if(i%10000==0)System.out.println("小喵喵叫");}}}
class Puppy implements Runnable{public void run(){for(int i=1;i<=50000;i++)if(i%10000==0)System.out.println("小汪汪叫");}
}public class test
{public static void main(String args[]){Kitty k=new Kitty();Puppy p=new Puppy();Thread kitty=new Thread(k);Thread puppy=new Thread(p);kitty.start();puppy.start();for(int i=1;i<=50000;i++)if(i%10000==0)System.out.println("主人叫");}
}
package test;class Kitty implements Runnable{public void run(){for(int i=1;i<=50000;i++){if(i%10000==0)System.out.println("小喵喵叫");}}}
class Puppy implements Runnable{public void run(){for(int i=1;i<=50000;i++)if(i%10000==0)System.out.println("小汪汪叫");}
}public class test
{public static void main(String args[]){Kitty k=new Kitty();Puppy p=new Puppy();Thread kitty=new Thread(k);Thread puppy=new Thread(p);kitty.start();puppy.start();for(int i=1;i<=50000;i++)if(i%10000==0)System.out.println("主人叫");}
}
package test;public class test
{public static void main(String[] args) {ClassRoom room317=new ClassRoom();room317.student.start();room317.teacher.start();}}
1.2 Thread 类和 Runnable 接口
1.3 线程的生命周期
2.JDBC与数据库访问