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与数据库访问