首页 > 学院 > 开发设计 > 正文

攻克学习多线程时碰到的难题

2019-11-17 06:13:07
字体:
来源:转载
供稿:网友

    接触多线程已经不少时间了,也做了不少事情,但是一直觉得用起来不那么顺手,在debug的时候,往往会比较担心在同步上出什么问题,想起"程序员最怕的是自己写的代码"这句话,觉得真是不假.

    终于有一天,我觉得是时候把这个问题弄清楚了,所以,我就在网上找相关的内容看,结果竟然是找不到在我这个阶段应该看的,不是太简单,就是一笔带过,不知所云.
    废了九牛二虎之力,终于差不多弄清楚了,其中有不少误区,以前认为的和真理相差甚大.想起自己花费的时间,真是觉得有点多,所以把它写出来,一是防止自己以后又会忘掉,二是给像我一样的似懂非懂者留下一点可以参考的东东.
    闲话少说,转入正题!
  ---------------------------------
    先从线程的创建说起.线程的创建一共有两种形式:
  ---------------------------------

    一种是继续自Thread类.Thread 类是一个具体的类,即不是抽象类,该类封装了线程的行为。要创建一个线程,程序员必须创建一个从 Thread 类导出的新类。程序员通过覆盖 Thread 的 run() 函数来完成有用的工作。用户并不直接调用此函数;而是通过调用 Thread 的 start() 函数,该函数再调用 run()。
   
    例如:

    public class Test extends Thread{
      public Test(){
      }
      public static void main(String args[]){
        Test t1 = new Test();
        Test t2 = new Test();
        t1.start();
        t2.start();
      }
      public void run(){
        //do thread's things
      }
    }

----------------------------
   
    另一种是实现Runnable接口,此接口只有一个函数,run(),此函数必须由实现了此接口的类实现。
   
    例如:

 


 

进入讨论组讨论。

    public class Test implements Runnable{
      Thread thread1;
      Thread thread2;
      public Test(){

        thread1 = new Thread(this,"1");
        thread2 = new Thread(this,"2");
      }
      public static void main(String args[]){
        Test t = new Test();


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表