线程

进程:一种自包容的运行程序,由操作系统直接管理,直接运行,有自己的地址空间,每个进程一开启都会消耗内存。

线程:线程是进程内部单一的顺序控制流。一个进程拥有多个线程。多个线程共享一个进程的内存空间。

基于进程的特点是允许计算机同时运行两个或更多的程序。

基于线程的多任务处理环境汇总,线程时最小的处理单位

多任务处理的两种类型:

基于进程

基于线程

主线程:main方法一运行,就开启主线程。

主线程特点:  1、最先开始 

2、最后结束           

3、产生其他的子线程           

4、回收资源

创建线程的两种方式:声明一个Thread类的子类,并覆盖run()方法

                                               Class myThread extends Thread{

         Public void run(){}覆盖该方法

}

声明一个Runnable接口的类,并实现run()方法

Class mythread implements Runnable{

         Public void run(){}实现该方法

}

继承方法启动线程,调用start();

接口需要在之前创建线程时,需要传入Runnable实现类对象,那么线程启动时,会执行该对象的run();

Thread three=new Thread(new TwoThread());

three.start();

在线程类中,调用startrun的区别。

如果直接调用run(),时普通方法调用,不会再主线程基础上,开启子线程,是单线程。

条用start(),会在主线程基础那个,开启子线程,多个任务同时执行。

 

 

 
   

 

 

 

线程拥有八种状态:

 

 

 
   

 

 

 

 

 

 

 

 

 

 
   

 

 

 

 

 

 

 

 

 

0、新建

1、就绪

2、运行

3、睡眠

4、等待

5、挂起

6、阻塞

7、死亡

线程优先级:当两个或两个以上的线程,同时处于就绪状态,等待CPU执行。优先级高的线程,会优先得到执行。优先级一共分为10级。数字越大,优先级越高。

线程同步(线程安全)当两个或两个以上的线程同时操作同一个资源时,在同一时间只允许一个线程进行访问,别的线程进行等待。

Synchronzeed同步,可以作为方法修饰符。表示当一个线程正在访问资源时,别的线程只能等待。当该线程结束对该资源的访问,才允许别的线程访问。

同步造成的结果:1、数据安全

                                2、效率低下

同步有两种方式:同步方法和同步块

同步方法:public synchronized void test(){}

同步块:public void run(){

Synchorized(obj){

}

}

Wait和sleep的区别

1、Sleep方法在线程类Thread中定义,waiti方法在object中定义

2、wait方法只能放在方法或同步块中,表示当前线程对资源进行等待。Sleep方法可以放在任何位置,表示当前线程休眠。

3、wait方法要释放对象锁,sleep方法不会释放对象锁。

4、Wait方法使用后,线程要notify唤醒后才能继续执行。而sleep方法执休眠结束后,线程自动继续执行。

posted on 2016-04-19 22:28  Jleeci  阅读(124)  评论(0编辑  收藏  举报

导航