java多线程学习笔记

来源:互联网 发布:java office在线预览 编辑:程序博客网 时间:2024/04/29 02:06

概念:进程,一个程序的执行就是一个进程,如qq软件的执行,搜狗浏览器的执行,这就是一个进程。进程之间的通信有信号量、套接字等。

            线程,就是一个程序下的多种并发执行操作,一个浏览器可能同时刷新多个网页,这就是多线程。在程序执行过程中,多个进程之间内存是共享的。

java多线程实现:

在java中可有两种方式实现多线程,一种是继承Thread类,一种是实现Runnable接口;Thread类是在java.lang包中定义的。

一个类只要继承了Thread类同时覆写了本类中的run()方法就可以实现多线程操作了,但是一个类只能继承一个父类,这是此方法的局限。(java中一个类只能有一个父类)

      

class MyThread1 extends Thread{    public static int index;      public void run(){          for (int i=0;i<100;i++)          System.out.println(getName()+":"+index++);      }}public class TestThread {     public static void main(String[] args){            MyThread1 t1 =new MyThread1();         MyThread1 t2 = new MyThread1();         MyThread1 t3 = new MyThread1();         t1.start();         t2.start();         t3.start();         new MyThread1().start();        new MyThread1().start();              }}
继承Thread类来实现多线程,只要对run()进行重写,在需要执行的地方调用该类的start()方法即可。

      但是java中一个类只有一个父类,也就是说一个类要是继承了别的类就无法去继承Thread类来实现多线程了,此时我们用Runnable接口实现多线程就能解决这个问题,而且在java中一个类是允许实现多个接口的。

      但是有个一问题,就是Runnable接口实现的类中没有start()方法,只有Thread实现的类中有这个方法,我们发现Thread类有一个构造方法:public Thread(Runnable targer)此构造方法接受Runnable的子类实例,也就是说可以通过Thread类来启动Runnable实现的多线程是可行的。我们来看下面的代码:

    

class Wife {    public static int index;}class Son extends Wife implements Runnable{    public String name;    public Son(String name){          this.name = name;    }    @Override    public void run() {        //To change body of implemented methods use File | Settings | File Templates.        for (int i=0;i<100;i++)            System.out.println(this.name+": "+index++);    }}public class TestThread {     public static void main(String[] args){         Son s1 =new Son("A");         Son s2 = new Son("B");         new Thread(s1).start();         new Thread(s2).start();     }}
代码中,Son类继承了Wife类就没有办法再继承Thread类了,但是我们用Runnable接口实现了多线程的操作!

0 0
原创粉丝点击