进程与线程浅析(二)

今天主要介绍一下JAVA中,线程的使用。

首先,总结下java对线程的支持。

在JAVA中,对线程的支持主要体现在一个类(class)和一个接口(interfac)中。

即Thread类,和Runnable接口。

特点:

a)两者皆继承于java.lang包。

b)两者都有一个public void run()方法。提供线程实际工作的代码。

其次,介绍一下java中线程的创建和启动

a)线程的创建

Thread()

Thread(String name)

Thread(Runnable target)

Thread(Runnable target, String name)

b)线程的启动

void start()

再次,介绍一下线程的常用方法

a)线程休眠

static void sleep(long millis)

static void sleep(long millis, int nanos)

b)使其他线程等待当前线程终止

void join()

无参数,则其他线程需等当前线程结束才可执行

void join(long millis)

有参数,则设置其他线程等待当前线程的等待时机的阈值

void join(long mllis, int nanos)

两个参数,则更加精确

c)当前线程释放处理器资源

static void yield()

d)获取当前运行的线程引用

static Thread currentThread()

最后,写一段例程

一段介绍

public class Fanyoy extends Thread{

  

public void run(){

  System.out.println(getName() + "是一家游戏公司");

  int count = 0;

  boolean isRunning = true;

  while(){

  System.out.println(getName() + "上线" + (++ count) + "部作品");

  if(count == 100)

  {

    isRunning = false;

  }

  if(coun % 10 == 0)

      {

    Thread.sleep(1000);

  }

  }

}

public static void main(String[] args){

  Thread fanyoy = new Fanyoy();

  fanyoy.setName("Fanyoy");

  fanyoy.start();

      Thread murong = new Thread(new Murong(), "Murongxiaopifu");

      murong.start();

}

}

class Murong implements Runnable(

public void run(){

  System.out.println(Thread.currentThread.getName() + "是一个程序员");

  int count = 0;

  boolean isRunning = true;

  while(){

  System.out.println(Thread.currentThread.getName() + "上线" + (++ count) + "部作品");

  if(count == 100)

  {

    isRunning = false;

  }

  if(coun % 10 == 0)

      {

    Thread.sleep(1000);

  }

  }

}

}
时间: 2024-10-10 20:19:14

进程与线程浅析(二)的相关文章

进程与线程(二) java进程的内存模型

从我出生那天起,我就知道我有个兄弟,他桀骜不驯,但实力强悍 ,人家都叫它C+++            ----java 上回说到了,C进程的内存分配,那么一个java运行过程也是一个进程,java内存是如何分配的呢? http://blog.csdn.net/shimiso/article/details/8595564 详情请看:http://blog.csdn.net/a859522265/article/details/7282817 1.学习java,学过java多线程,没有学过多进程

python 进程、线程 (二)

一.多线程与多进程的对比 在python 进程.线程 (一)中简单的说过,CPython中的GIL使得同一时刻只能有一个线程运行,即并发执行.并且即使是多核CPU,GIL使得同一个进程中的多个线程也无法映射到多个CPU上运行,这么做最初是为了安全着想,慢慢的也成为了限制CPython性能的问题. 就像是一个线程想要执行,就必须得到GIL,否则就不能拿到CPU资源.但是也不是说一个线程在拿到CPU资源后就一劳永逸,在执行的过程中GIL可能会释放并被其他线程获取,所以说其它的线程会与本线程竞争CPU

进程与线程浅析(一)

首先,介绍一下两者的基本概念. 进程:1.程序或者说任务的执行过程.(动态性) 2.持有资源(共享内存,文件)和线程(是资源和线程的载体) 线程:1.线程是系统中最小的执行单元 2.同一个进程中可以有多个线程 3.线程共享进程的资源 综上,进程和线程的关系可以类比为班级和学生的关系,学生是组成该班级的最小单元,班级是学生的载体,学生可以利用该班级的资源,比如桌椅板凳等. 其次,介绍一下线程的交互. 线程之间的关系可以分为两种,互斥与同步. 互斥:即线程对相同的资源进行持有,则必须等前一个线程释放

Linux下的进程与线程(二)—— 信号

Linux进程之间的通信: 本文主要讨论信号问题. 在Linux下的进程与线程(一)中提到,调度器可以用中断的方式调度进程. 然而,进程是怎么知道自己需要被调度了呢?是内核通过向进程发送信号,进程才得以知道的. Linux系统的进程之间是通过信号来通信的. 程序员在Shell上显式地发送信号使用的是kill命令,原型如下: kill -sigid [-]pid 其中, sigid指示的是信号的id,pid前若有-,则pid代表的为进程组id,否则pid代表的为进程id kill函数也有相同的作用

Python的进程和线程(二)——IO密集型任务

一.什么是IO密集型任务? 主要的核心任务是进行IO操作,比如写文件,进行磁盘的读写等等. 上一篇博客,对计算密集型任务,多线程并没有体现它的好处,反而话费的时间更长.对IO密集型任务多线程会有明显的优势 二.举例: 任务:爬取韩寒的博客 1.获取urls, 2.根据文章的url,爬取内容,保存文件 3.将urls分给不同的进程/线程 4.多进程/多线程爬取 step1:爬取urls 思路:用requests库来爬取页面,用beautifulSoup库来获取目标的urls值 import req

操作系统 进程与线程 浅析

进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握.最近,我读到一篇材料,发现有一个很好的类比,可以把它们解释地清晰易懂. 1.计算机的核心是CPU,它承担了所有的计算任务.它就像一座工厂,时刻在运行. 2.假定工厂的电力有限,一次只能供给一个车间使用.也就是说,一个车间开工的时候,其他车间都必须停工.背后的含义就是,单个CPU一次只能运行一个任务. 3.进程就好比工厂的车间,它代表CPU所能处理的单个任务.任一时刻,CPU总是运行一个进程,其他进程处

进程与线程浅析(三)之线程三国战斗模拟

好久没有更新这个系列的文章了,那么书接前文.上一篇文章中已经说了小匹夫是做游戏开发的,光说不练假把式,下面的文章就利用java中的线程来做一个小小的模拟对战的演示好了. 既然是做游戏开发,游戏背景还是要有的,那么就选择三国题材吧. 既然是三国,那么就是乱世争天下咯,军队就是必不可少的. 小匹夫本人喜欢刘备,那么敌人自然就假设是曹操了. 这里我们使用Runnabel对象启动军队线程来模拟军队的战斗行为. //用来创建军队线程,模拟军队战斗 public class ArmyRunnable imp

Python之路第一课Day9--随堂笔记之二(进程、线程、协程篇)

本节内容 进程.与线程区别 python GIL全局解释器锁 线程 语法 join 线程锁之Lock\Rlock\信号量 将线程变为守护进程 Event事件 queue队列 生产者消费者模型 Queue队列 开发一个线程池 进程 语法 进程间通讯 进程池 一.进程与线程 1.线程 线程是操作系统能够进行运算调度的最小单位.它被包含在进程之中,是进程中的实际运作单位.一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务 A thread is an ex

python基础-------进程线程(二)

Python中的进程线程(二) 一.python中的"锁" 1.GIL锁(全局解释锁) 含义: Python中的线程是操作系统的原生线程,Python虚拟机使用一个全局解释器锁(Global Interpreter Lock)来互斥线程对Python虚拟机的使用.为了支持多线程机制,一个基本的要求就是需要实现不同线程对共享资源访问的互斥,所以引入了GIL.GIL:在一个线程拥有了解释器的访问权之后,其他的所有线程都必须等待它释放解释器的访问权,即使这些线程的下一条指令并不会互相影响.在