前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >线程之状态和创建方式

线程之状态和创建方式

作者头像
OPice
发布2019-10-24 02:33:36
2830
发布2019-10-24 02:33:36
举报
文章被收录于专栏:D·技术专栏D·技术专栏

什么是多线程

线程是计算机进行运算调用的最小单元,包含在进程内。例如:一个微信在计算机后台属于一个进程,发送一句话是由一个线程完成的,同时要保存聊天的内容,是由另一个线程完成,所以在进程中有多个线程。

发送消息和保存聊天记录,在我们看起来是同时完成,只是宏观上看来。微观上是单个CPU将时间分成多个时间段,交替执行。只有在多个CPU处理器才会真正存在并行的操作。

为什么要用多线程

在单核CPU内,时间执行是串行,为什么还要用多线程呢?

1、防止阻塞,在单个线程执行I/O操作时,线程会等待。

2、提高效率,如果是单线程在双核CPU的机器上就浪费了50%的效率,4核 75%。

线程的状态

线程的创建方式

1、继承Thread类

代码语言:javascript
复制
public class MyThread extends Thread {
    @Override
    public void run(){
        System.out.println("this is extends Thread");
    }
}
MyThread myThread = new MyThread();
myThread.start();

2、实现Runable接口

代码语言:javascript
复制
public class MyThread2 implements Runnable {
    @Override
    public void run() {
        System.out.println("this is implements runable");
    }
}
MyThread2 myThread2 = new MyThread2();
Thread thread = new Thread(myThread2);
thread.start();

3、实现Callable接口

代码语言:javascript
复制
public class MyThread3 implements Callable {
    @Override
    public Object call() throws Exception {
        return null;
    }
}
MyThread3 myThread3 = new MyThread3();
FutureTask<Object> objectFutureTask = new FutureTask<Object>(myThread3);
Thread thread1 = new Thread(objectFutureTask);
thread1.start();

4、从线程池的方式

代码语言:javascript
复制
public class MyThread4 implements Callable {
    @Override
    public Object call() throws Exception {
        return null;
    }
}
ExecutorService pool = Executors.newFixedThreadPool(5);
for (int i = 0; i < 5; i++) {
  Callable myThread4 = new MyThread4();
  pool.submit(myThread4);
}
pool.shutdown();
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.07.31 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是多线程
  • 为什么要用多线程
  • 线程的状态
  • 线程的创建方式
    • 1、继承Thread类
      • 2、实现Runable接口
        • 3、实现Callable接口
          • 4、从线程池的方式
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档