多线程

        多线程 多执行路径的方法。多线程来达到同样的问题,当多个执行代码,来说会减少。

                              创建线程有两个方法    

                                    方法1.将类声明为Thread的子类。该子类重写Thread类的run方法。

                                               即定义一个类继承Thread,覆盖run方法。

当中run方法是封装自己定义线程执行任务的函数。

例:class    method  extends  Thread{

public void run(){

                                                     for(i=0;i<10;i++){

                                                                 syatem.out.println("i="+i);

                                                                }

                                                 }

}

class  Demo{

public static void main(String[] args){

method     m=new     method();

                                                          m.start();//开启线程,调用run方法。

}

}

                               方式2:1.定义一个类实现Runnable接口。

                                            2.覆盖接口中的run方法,将线程的任务代码封装到run方法中。

                                            3.通过Thread 类创建线程对象,并将runnable接口的子类对象

                                               作为Thread类的构造函数的參数进行传递,这是由于线程的任务

                                               都封装在Runnable接口子类对象的run方法中,所以要在线程对象

                                               时,就必需要明白要执行的任务。

   4.调用Thread类中的start方法开启线程。

                                     例:class   Demo implements   Runnabie{

                                                 public   void    run(){

                                                      for(int  x=0;x<20;x++){

                                                               system.out.println("x="+x);

                                                         }

                                                  }

                                              }   

                                             

                                         class   Demo implements   Runnabie{

                                                 public  static  void   main(String[] args){

                                                      Demo    d=new    Demo();

                                                          Thread   t=new Thread(d);

                                                         t.start();

                                                  }

                                              }   

       在多线程执行的过程中,其它线程也參与了运算,将会导致线程安全问题的产生,这是就用到了同步代码块

       和同步函数。例如以下例。

        练习:等待唤醒机制

class Resource{

private String name;

private String sex;

private boolean flag=false;

public synchronized void set(String name,String sex){

if(flag)

try{wait();}catch(InterruptedException e){}

this.name=name;

this.sex=sex;

flag=true;

notify();

}

public synchronized void out(){

if(!flag)

try{wait();}catch(InterruptedException e){}

System.out.println(name+"....."+sex);

flag=false;

notify();

}

}

class Input implements Runnable {

Resource r;

Input(Resource r){

this.r=r;

}

public void run(){

int x=0;

while(true){

if(x==0){

r.set("老婆","1314");

}

else{

r.set("laogong","3344");

}

x=(x+1)%2;

}

}

}

//输出

class Output implements Runnable{

Resource r;

Output(Resource r){

this.r=r;

}

public void run(){

while(true){

r.out();

}

}

}

class Test{

public static void main(String args[]){

Resource r =new Resource();

Input a = new Input(r);

Output b = new Output(r);

Thread t1= new Thread(a);

Thread t2= new Thread(b);

t1.start();

t2.start();

}

}






































































原文地址:https://www.cnblogs.com/bhlsheji/p/4601655.html