多线程

来源:互联网 发布:usb3.0端口 编辑:程序博客网 时间:2024/05/01 12:57
线程安全: 线程同步,当一个程序对一个线程安全的方法或语句访问时,其他的不能对他进行操作,必须等到这次访问结束才能对这个线程安全的方法进行访问
线程不安全:线程不同步
线程安全问题是由全局变量及静态变量引起的,若每个线程中对全局变量,静态变量只有读操作,而无写,一般来说,这个局部变量线程安全的,若多个线程同时执行写操作,一般考虑线程同步,否则可能影响线程安全。
        安全 : 医院的网站,银行网站
           效率 : 新闻网站,论坛之类的


1.一个类只要继承了Thread类,此类就称为多线程操作类,在Thread子类中,必须明确地覆写Thread类中的run( )方法
此方法为线程主体
  格式:   class 类名称 extends Thread{
                属性;
                方法;
               public void run( ){      //覆写Thread类中的run( )方法,此方法是线程的主体
                    线程主体   
                    }
2.如果要正确的启动线程,是不能直接调用run()方法,而应该是调用从Thread类中继承而来的start( )方法。
3.实现Runnable接口相对于继承Thread类来说,适合多个相同程序代码的线程去处理同一资源情况,可以避免
由于java的单继承性带来的局限,争强了程序的健壮性,代码能够被多个线程共享,代码与数据是独立的。
  通过Runnable实现多线程
       格式:   class 类名称 implements Thread{
                属性;
                方法;
               public void run( ){      //覆写Runnable类中的run( )方法,此方法是线程的主体
                    线程主体   
                    }

4.线程的状态
     创建状态,就绪状态,运行状态,堵塞状态,死亡状态。

5.线程的强制运行,可以是用join()方法让一个线程强制运行,线程运行期间,其他线程无法运行,必须等此线程完成才可以继续执行。

6.在线程中允许一个线程进行暂时的休眠,直接使用Thread.sleep()方法即可实现休眠。
class Mythread implements Runnable {
     @Override
     public void run() {
            for( int i=0; i<5; i++){
                 try{
                     Thread. sleep(500);
                } catch(Exception e){}
                System. out.println(Thread. currentThread().getName()+"行,i="+ i);
           }         
    }
}
public class ThreadSleepDemo {
     public static void main(String[] args) {
           Mythread mt= new Mythread();
            new Thread( mt, "线程").start();   //启动线程
     }

}

7.在一个线程运行时,另外一个线程可以直接通过interrpt()方法中断其运行状态。

8.线程的优先级
在java的线程中使用setPriority( )方法可以设置一个线程的优先级
对象1.setPriority(Thread.MIN_priority)   最低优先级
       2.setPriority(Thread.norm_priority)  中等优先级
       3.setPriority(Thread.MAX_priority)   最高优先级
9.同步:指多个操作在同一个时间段内只能有一个线程进行,其他线程要等待完成之后才可以继续执行
①同步代码块
       synchronized(同步对象){
          需要同步的代码;
②同步方法 synchronized   
synchroized  方法返回值 方法名称(参数列表)
{     }

异步 :Asynchronous     
1.进程:是一个正在执行中的程序,每个进程执行都有一个执行顺序,该顺序
             是一个执行路径,或者叫一个控制
2.线程: 就是进程中的一个独立的控制单元,线程在控制着进程的执行
             一个进程中至少有一个线程
3.java vm:启动的时候会有一个进程java.exe,该进程中至少一个线程负责java        
              程序的执行,而且这个线程运行的代码存在于main方法中。
               该线程称之为主线程。
4.扩展:其实更细节说明jvm,jam启动不字一个线程,还要负责垃圾回收的线程

二。如何在自定义代码中,自定义一个线程?
 
通过对API的查找,java已经提供对线程这类事物的描述,就Tread类
       创建线程的第一种方式,继承Tread类
   步骤:     1.定义类继承Tread
                   目的:讲自定义代码存储在run方法,让线程运行。  
          2.复写Thread类中的run方法
          3.调用线程的start方法,该方法两个作用:
 因为多个线程都获取Cpu的执行权,cpu执行到谁,谁就运行。
我们可以形象的把多线程的运行行为在互相抢夺cpu的执行权。

三。Thread类用于描述线程
   该类就定义了一个功能,用于存储线程要执行的代码,该存储功能就是run方法
  也就是说thread类中的run方法,用于存储线程要运行的代码 
0 0