【第22期】观点:IT 行业加班,到底有没有价值?

基本的线程机制(一)

原创 2015年11月19日 12:36:06
    java编程思想中说道:并发编程使我们可以将程序划分为多个分离的,独立运行的任务。通过使用多线程机制,这些独立任务(也被称为子任务)中的每一个都将由执行线程来驱动。一个线程就是在进程中的一个单一的顺序控制流,因此,单个进程可以拥有多个并发执行的任务,但是你的程序使得每个任务都好像有其自己的cpu一样。其底层机制是切分cpu时间,通常程序员不需要考虑他。
    针对以上提出,可以分为任务,执行线程,执行线程的控制流来讨论。
  1. 任务
    think in java提到将程序划分为多个分离的,独立运行的任务。线程可以驱动任务,因此在java中需要一个描述任务的方式.这里通常有三种方法实现Runnable接口,Callable接口,继承Thread类。对于这里我们详细讨论Runnable接口

  public   interface Runnable {
     public abstract void run();
}

Runnable中有一个抽象run方法,让其子类实现这个方法下面举一个实例

public class Liftoff implements Runnable{
    protected int countDown = 10;
    private static int taskCount=0;
    private final int id=taskCount++;
    public Liftoff(){

    }
    public Liftoff(int countDown){
        this.countDown=countDown;
    }
    public String status(){
        return "#" +id +"("+(countDown >0 ?countDown :"Liftoff!")+"), ";
    }
    @Override
    public void run() {
        while(countDown-->0){
            System.out.println(status());
            Thread.yield();
        }   
    }   
}

Liftoff类实现了Runnable接口,重写run方法,Thread.yield后面会介绍
在这里我们把任务定义出来,现在我们缺少什么?现在就缺少一个线程驱动调用这个方法。
我们这里采用Main方法调用,Main方法实质上也是一个线程:

public class MainThread {
    public static void main(String[] args) {
        Liftoff launch=new Liftoff();
        launch.run();
    }
}/*out
#0(9), #0(8), #0(7), #0(6), #0(5), #0(4), #0(3), #0(2), #0(1), 
#0(Liftoff!), */

在这里对任务的基本定义就结束,接下来学习Thread类

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

js工具方法

滚动距离window.onscroll = function() { var t = document.documentElement.scrollTop || document.bo...

解决notepad++中英文混编的换行问题

In the menu go to, Plugins->NppExec->Execute… Paste this text sci_sendmsg SCI_SETWRAPMODE SC_WR...

程序员升职加薪指南!还缺一个“证”!

CSDN出品,立即查看!

25个简单shell例子

1.模拟linnux登录shell 复制代码 代码如下: #/bin/bash echo -n "login:" read name echo -n "password:" read passw...

史上最简单的 IntelliJ IDEA 教程

1 简介  IntelliJ IDEA(简称 IDEA),是 Java 语言开发的集成环境,IDEA 在业界被公认为最好的 Java 开发工具之一,尤其在智能代码助手、代码自动提示、重构、J2EE 支...

基本的线程机制

一、线程概念 并发编程使我们可以将程序划分成多个分离的、独立运行的任务。通过使用多线程机制,这些独立任务中的每一个都将由执行线程来驱动。一个线程就是在进程中的一个单一的顺序控制流,因此,单个进程可以...

navicat premium 11 for mac 无限试用

介绍我的配置是 MacOS 10.12.1 + navicat premium 11.2.15无限试用在mac命令行下输入rm -Rf ~/Library/Application\ Support/P...

IntelliJ-IDEA和Git、GitHub、Gitlab的使用(五)

IntelliJ-IDEA版本控制介绍,主要讲述git 一、基本入门1.IntelliJ-IDEA预装的版本控制介绍我们来看IntelliJ-IDEA的版本控制设置区域 打开File>Setting...

shell脚本实例集合

1.2.3.4.5.6.7.8.9.10.

java小记

1  面向对象的特征    1 封装 继承 多态     封装:1.将不需要对外提供的内容都隐藏起来;  2.把属性都隐藏起来,提供公共方法对其访问;     继承: 1.父类是具有共同特征的一些方法...

多线程知识巩固(八) 异步,同步

多线程是程序开发中非常基础的一个概念,大家在开发过程中应该或多或少用过相关的东西。同时这恰恰又是一个比较棘手的概念,一切跟多线程挂钩的东西都会变得复杂。如果使用过程中对多线程不够熟悉,很可能会埋下一些...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)