java多线程编程笔记1

来源:互联网 发布:linux文件夹不能删除 编辑:程序博客网 时间:2024/03/29 18:11
以前很久听过多线程编程,但是一直没弄清楚多线程编程到底是怎么回事,最近认真研究了下,感觉多线程编程应用的实在是太多了,在此把所做笔记分享一下:<p>我先贴个代码,待会慢慢解释:

 

package Duoxianc;public class Duoxc { /**  * @param args  */ public static void main(String[] args) {  // TODO Auto-generated method stubCat cat=new Cat();cat.start(); }}class Cat extends Thread{ public void run() {  int n=0;  while(true)  {   try {    Thread.sleep(1000);   } catch (InterruptedException e) {    // TODO Auto-generated catch block    e.printStackTrace();   }  System.out.println("MAOMAO来啦!"+n);  n++;  if(n>10)  {   break;  }  } }}


 

这是一种多线程实现方法,就是直接继承于Thread类,然后重写里面的run()方法,可以在里面干你想干的事情,然后在主函数里面创建一个对象,可以用这个对象直接启动线程,上面代码实现每隔一秒输出一句“猫猫来啦”!
还有一种实现多线程的方法就是实现Runnablej接口,这也是一种很好的方法,用得会更多,待会会介绍他的优点:还是老规矩,贴个代码看看:

package Duoxianc;public class Implementrun { /**  * @param args  */ public static void main(String[] args) {  // TODO Auto-generated method stubDog dog=new Dog();Thread th=new Thread(dog);th.start(); }}class Dog implements Runnable{ @Override public void run() {  // TODO Auto-generated method stub  int n=0;  while(true)  {   try {    Thread.sleep(1500);   } catch (InterruptedException e) {    // TODO Auto-generated catch block    e.printStackTrace();   }   System.out.println("gOUgou也来啦!"+n);   n++;   if(n>10)   {    break;   }  } } }


 

这种方法就是实现Runnable接口的方法,在你的类里面实现run()方法,跟上面一样,这里是每隔一秒输出一个"狗狗也来啦",但是仔细看主程序里面,这里启动线程的方式与继承thread 有所不同,这里是先产生一个对象,让后把他作为产生一个新线程的参数,启动线程就用这个产生的新线程来启动,还是调用start()方法。
这两种方法都能实现多线程,但是我觉得用实现接口的方法会更好一点,因为要是继承于Thread会导致这个类不能再继承其他的类了,因为我们知道java里面是不支持多继承的,所以如果我们用实现接口的方法会留出一个继承的接口,而实现接口确实没有限制的,所以还是支持大家使用实现接口的方法来做多线程编程,但是如果你的类比较简单,不需要继承,你也可以选择继承thread方法来做,也能达到你想要的结果,好啦,今天笔记暂时做到这啦!


原创粉丝点击