线程1

Posted wsjun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线程1相关的知识,希望对你有一定的参考价值。

一,基本概念:

  • 程序(program):是为了完成特定的任务,而用某种语言编写的一段静态代码
  • 进程(process): 是程序的一次执行过程,或是正在运行的一个程序。
  • 线程(Thread) :是进程的进一步细分,是一个程序内部的一条执行路径。

-->程序是静态的,进程是动态的。一个程序同一个时间运行多个线程,就是多线程。

二,创建多线程

方式1:继承java.lang.Thread 类

//1.创建一个继承于Thread的子类
class subClass extends Thread{
    //2.重写Thread类的Run() 方法,方法内实现此子线程要完成的功能
  public void run(){
      //....  
    }  
}

//测试类
public class TestThread{
  public static void main(String[] args){
       //3. 创建一个子类的对象
       SubThread st = new SubThread();
      //4. 调用线程的start(),启动此线程;调用相关的run()方法
      st.start(); //java.lang.Thread.start(); 会调用run()方法,一个线程只能执行一次start()
      
      //....主线程也可以执行自己的操作
    }
}
    

方式二:

 1 //通过实现的方式创建多线程 
 2 //1.创建一个实现了Runable接口的类
 3 class SubRunable implements Runable{
 4 //2.实现RUnable接口的run() 方法
 5   public void run(){
 6      //....  
 7     }
 8 }
 9 
10 public class testThrea1{
11     public static vod main(String[] args){
12 //3.创建一个RUnable接口实现类的对象
13         SubRunable sub = new SubRunable();
14         //想要启动一个线程,必须调用start()
15 //4.将此对象作为形参传递给Thread类的构造器中,创建Thread类的对象,此对象就是一个线程
16        Thread t1 = new Thread(sub);
17  //启动线程,执行Thread 对象生成是狗在其形参的对象的run()方法        
18      t1.start();
19  //若启动多个线程
20     Thread t2 = new Thread(sub);
21      t2.start();
22     }
23 }        

比较:联系:public class Thread implements Runable

  实现的方式即方式二优于继承的方式

  原因:接口可多继承,避免了java单继承的局限性

     如果多个线程操作同一份资源(或数据),更适合使用实现的方式,因为不用new 多个Thread对象。

 

以上是关于线程1的主要内容,如果未能解决你的问题,请参考以下文章

多个用户访问同一段代码

JUC并发编程 共享模式之工具 JUC CountdownLatch(倒计时锁) -- CountdownLatch应用(等待多个线程准备完毕( 可以覆盖上次的打印内)等待多个远程调用结束)(代码片段

活动到片段方法调用带有进度条的线程

线程学习知识点总结

线程上的Android片段替换(...)

分析定位占用CPU资源高的JVM线程