线程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应用(等待多个线程准备完毕( 可以覆盖上次的打印内)等待多个远程调用结束)(代码片段