当前位置: 首页 > news >正文

织梦开发网站芜湖市建设银行支行网站

织梦开发网站,芜湖市建设银行支行网站,网络管理员正在设计新的无线网络,营销型网站深度网线程是什么: 进程是程序的一次动态执行的过程,线程是进程中执行运算最小单位,一个进程在其执行过程中可以产生多个线程,而线程必须在某个进程内执行。 如果在一个进程中同时运行了多个线程(必须包含一个主线程&#…

线程是什么:

进程是程序的一次动态执行的过程,线程是进程中执行运算最小单位,一个进程在其执行过程中可以产生多个线程,而线程必须在某个进程内执行。

如果在一个进程中同时运行了多个线程(必须包含一个主线程),用来完成不同的工作,则称之为“多线程”多个线程交替占用CPU资源,而非真正的并行执行

主线程:

main()方法即为主线程入口

产生其他子线程的线程

必须最后完成执行,因为它执行各种关闭动作

一、创建线程的三种方法:

1.Thread类创建线程

继承Thread类,重写run()方法线程要执行的操作放在run()方法中,通过调用start()方法来启动线程start()方法只属于Thread类

注意:创建线程对象时不会执行线程,必须调用线程对象的start方法才能使线程开始

线程每次执行时长由分配的CPU时间片长度决定

主线程:
public class TestThread {public static void main(String[] args) {//查看主线程Thread thread = Thread.currentThread();System.out.println(thread.getName());//启动子线程MyThread myThread = new MyThread();myThread.start();}
}

子线程:
public class MyThread extends Thread{@Overridepublic  void run(){for (int i=0;i<10;i++){System.out.println(Thread.currentThread().getName()+"==="+i);}}
}

查看线程名字:

查看线程名:Thread.currentThread().getName()

这里的currentThread()是静态方法

public static void main(String[] args) {//查看主线程Thread thread = Thread.currentThread();System.out.println(thread.getName());//或者System.out.println( Thread.currentThread().getName());}

直接调用run()和start()区别:

使用run( )方法

同步执行,只有主线程一条执行路径

使用star( )方法

异步执行,多条执行路径,主线程和子线程并行交替执行

  • 直接调用run()就是同步执行,main方法会等run方法执行完以后才会执行下面的操作;
  • 调用star()方法可以实现异步执行,由线程调度器决定先执行main方法还是run方法,不是由程序代码中的 start() 调用的顺序直接决定的。

同步和异步:

也就是说一个程序需要运行完了有结果了才能进行下一个线程,这样这个程序就会堵塞其他的程序,这就是同步异步就是这个程序在运行的时候我仍然可以不管他运行别的程序

多线程可以将同步程序变为异步的,从而增加系统资源的利用率

2.Runnable接口创建线程:

因为Thread是单根继承,继承Thread之后不能够继承其他的类了。使用Runnable接口可以解决这个问题。

Runnable接口中声明了一个run()方法,即public void run()。

例子:使用Runnable接口创建线程

1.实现Runnable接口,并且实现Runnable接口的run()方法

2.创建Thread类对象,使用Runnable接口实现类的对象作为构造方法的参数 Thread td = new Thread(new Test02());

3.调用start方法

子线程:
public class MyRunnalbe  implements Runnable{@Overridepublic  void run() {for (int i = 0; i < 10; i++) {System.out.println(Thread.currentThread().getName() + "===" + i);}}
}

主线程:

注意:这个start方法是Thread类独有的

所以要创建一个thread对象,把myRunnalbe装进去

public class TestRunnable {public static void main(String[] args) {MyRunnalbe myRunnalbe = new MyRunnalbe();Thread thread = new Thread(myRunnalbe);thread.start();}
}

3.Callable接口创建线程:

首先介绍一下这个接口:

  1. 它需要重写call方法,而不是run了,
  2. 并且call()方法有返回值String,用futureTask.get()来接收返回值
  3. 它是一个泛型,默认返回为Object,可以在泛型中设置想要返回的类型

主程序:
public class TestMyCallable {public static void main(String[] args) {MyCallable myCallable = new MyCallable();FutureTask<String> futureTask = new FutureTask<>(myCallable);Thread thread = new Thread(futureTask);thread.start();//接收返回值try {System.out.println(futureTask.get());} catch (Exception e) {e.printStackTrace();}}
}

子线程:
public class MyCallable implements Callable<String> {@Overridepublic String call() throws Exception {for (int i = 0; i < 10; i++) {System.out.println(Thread.currentThread().getName() + "===" + i);}return "蛋蛋最牛掰";}
}

http://www.yayakq.cn/news/30973/

相关文章:

  • 网站升级改版摄影作品投稿平台
  • 用phpnow搭建网站的整个流程网页修改和编辑的软件有哪些
  • 如何做自助搜券网站做视频网站用什么源码
  • wordpress 手机站目录seo在线诊断工具
  • 网页首站工商注册公司名称核准
  • 成都网站公司ccyy切换路线专线
  • 外贸网站建设 深圳网站建设课程设计内容
  • 石家庄中小企业网站制作重庆公司做网站
  • 青浦网站设计常州 网站设计
  • 100个免费推广网站定制网站与模板建站维护
  • 网站建设公司好发信息网网络销售推广是做什么的具体
  • 中国网站建设的利弊中资源 网站域名解析
  • 网站没有做伪静态是什么样子创鑫时代广告公司简介
  • 青岛网站设计公司成都手机网站建设价格
  • 网站建设工作总结范文用帝国做的网站只收录首页
  • 做甜品台的网站青岛网站制作服务
  • 阿里云上可以做网站吗百度seo搜索排名
  • win7局域网网站开发秦皇岛海三建设一分公司
  • 国外html5网站源码口腔医院网站做优化
  • dw用ps切片做网站公司资质查询官方网站
  • 旅行社网站开发 论文网站添加百度商桥
  • 做图片详情网站网页制作图片切换
  • 网站建设公司自贡网络培训的感受
  • 怎么查询网站开发时间wordpress调用搜索结果
  • 东莞企业网站公司wordpress优化
  • 网站建设和网络推广哪个难做大连建立网页
  • 广州做护肤品的网站推广计划方案模板
  • 网站建设四川冠辰免费网站在线观看
  • 沈阳网站排名工具网站设计分辨率
  • 旅游网站建设合同著名建筑设计网站