Java的多线程 --线程的概念

  Java的多线程--线程的概念

一个程序同时执行多个任务,通常,每个任务称之为线程(thread),她是线程控制的简称。

可以运行一个以上的任务的程序叫做多线程程序。

1.感觉线程和进程很像,那么他们的区别是什么?

其实他们是有本质的区别:每个进程拥有自己独立的一整套变量,而线程则共享数据。

2.在Java中怎么创建一个线程去执行一个任务。

主要有4个步骤。

1)将任务代码移到实现了Runnable接口类的run方法中,这个接口很简单,只有一个方法。

public interface Runnable
{
void run();
}

我可以这样实现:


public class MyRunnable implements Runnable
{
public void run()
{
//task code
}
}

2)创建一个类的对象

Runnable r=new MyRunnable();

3)由Runnable创建一个Thread对象

Thread t =new Thread(r);

4) 调用start()方法启动线程。

t.start();

还有一种方法来创建一个线程:

通过构建一个Thread类的子类定义一个线程,这个方法已经不推荐使用了。

1)创建Thread类的子类。


public class MyThread extends Thread
{
public void run()
{
//task code
}
}

2)创建Thread类的子类对象。

Thread t=new MyThread();

3) 调用start()方法启动线程

t.start();

注意点
不要调用Thread类或者Runnable对象的run方法。因为直接调用run方法,只会执行同一个线程中的任务,而不会启动一个新的线程。应该调用Thread.start()方法,这个方法将创建一个执行run方法的新线程。

Java的多线程 --线程的概念

时间: 2024-10-19 12:35:17

Java的多线程 --线程的概念的相关文章

Java的多线程 --线程的状态

线程可以有6中状态. [1].New(新生) [2].Runnable(可运行) [3].Blocked(被阻塞) [4].Waiting(等待) [5].Timed Waiting(计时等待) [6].Terminated(被终止) 1.新生(New)线程: 当使用new 操作符创建一个先的线程,但该线程还没有调用start()方法.线程这个时候的状态就是新生,这个时候我们可以做些初始化之类的工作. 2.可运行(Runnable)线程: 一旦调用了start()方法,这个线程就处于可运行(Ru

Java 中的线程管理概念梳理

在Java中,"线程"指java.lang.Thread类的一个实例以及线程的执行,主要使用的线程池是ThreadPoolExecutor以及ScheduledThreadPoolExecutor,要使用固定线程上限的线程池. 用synchronized 修饰静态方法时,表示任何两个不同线程的调用互斥:修饰成员函数时,表示同一对象的多线程方法调用互斥:当然了,synchronized 后的参数可以是任意对象.Synchronized保证了synchronized块中变量的可见性,而vo

谈谈java中的线程(初级概念)

定义 关于进程与线程的定义 可参看一下这个介绍 http://www.ruanyifeng.com/blog/2013/04/processes_and_threads.html 在不细抠定义的情况下 我们可以认为 在操作系统里一个任务就是一个进程 像word,qq都可以看做一个进程. 另一方面如果这个进程内部的函数调用 就是一条线 那它就是单线程 如果有多条线 那就是多线程 而在这个进程内部 每一条执行的流程就叫做一个线程 我们自己定义的线程 在自定义线程之前 我们先看看java里关于线程的一

Java自学-多线程 线程池

Java 如何开发一个自定义线程池 每一个线程的启动和结束都是比较消耗时间和占用资源的. 如果在系统中用到了很多的线程,大量的启动和结束动作会导致系统的性能变卡,响应变慢. 为了解决这个问题,引入线程池这种设计思想. 线程池的模式很像 生产者消费者模式,消费的对象是一个一个的能够运行的任务 步骤 1 : 线程池设计思路 线程池的思路和生产者消费者模型是很接近的. 准备一个任务容器 一次性启动10个 消费者线程 刚开始任务容器是空的,所以线程都wait在上面. 直到一个外部线程往这个任务容器中扔了

黑马程序员--Java基础--多线程|线程同步

--Java培训.Android培训.iOS培训..Net培训 期待与您共同交流!-- 多线程基础.线程同步 1. 多线程基础 1.1. 进程和线程 1.1.1. 什么是进程 所谓进程(process)就是一块包含了某些资源的内存区域.操作系统利用进程把它的工作划分为一些功能单元.进程中所包含的一个或多个执行单元称为线程(thread).进程还拥有一个私有的虚拟地址空间,该空间仅能被它所包含的线程访问.线程只能归属于一个进程并且它只能访问该进程所拥有的资源.当操作系统创建一个进程后,该进程会自动

java的多线程:线程基础

1.线程与进程区别 每个正在系统上运行的程序都是一个进程.每个进程包含一到多个线程.线程是一组指令的集合,或者是程序的特殊段,它可以在程序里独立执行.也可以把它理解为代码运行的上下文.所以线程基本上是轻量级的进程,它负责在单个程序里执行多任务.通常由操作系统负责多个线程的调度和执行. 使用线程可以把占据时间长的程序中的任务放到后台去处理,程序的运行速度可能加快,在一些等待的任务实现上如用户输入.文件读写和网络收发数据等,线程就比较有用了.在这种情况下可以释放一些珍贵的资源如内存占用等等. 如果有

java的多线程:线程安全问题

什么是线程安全? 为什么有线程安全问题? 当多个线程同时共享,同一个全局变量或静态变量,做写的操作时,可能会发生数据冲突问题,也就是线程安全问题.但是做读操作是不会发生数据冲突问题. 抢火车的例子: 一号窗口和二号窗口同时出售火车第九九张,部分火车票会重复出售. 结论发现,多个线程共享同一个全局成员变量时,做写的操作可能会发生数据冲突问题. 二.线程安全解决办法: 问:如何解决多线程之间线程安全问题 答:使用多线程之间同步synchronized或使用锁(lock). 问:为什么使用线程同步或使

POSIX多线程—线程基本概念

http://blog.csdn.net/livelylittlefish/article/details/7957007 作者:阿波链接:http://blog.csdn.net/livelylittlefish/article/details/7957007 (整半年没有更新,发几篇以前的读书笔记.) content 1. 线程建立与使用 创建线程 初始线程 线程分离 2. 线程生命周期 就绪态 被阻塞 线程终止 线程回收 1. 线程建立与使用 创建线程 通过pthread_create()

Java的多线程 --线程中断

当线程的run方法执行方法体中的最后一条语句后,并由执行return语句返回时,或者出现了方法中没有捕获的异常时,线程将终止. 有一种可以强制线程终止的方法:interrupt可以用来请求终止线程.当对一个线程调用interrupt方法时,线程的中断状态将被置位,每一个线程都具有boolean标记.每个线程都应该不时的检查这个标记,以判断线程十分被中断. 要想清楚中断状态十分被置位,首先调用静态的Thread.currentThread()方法获得当前线程,再调用isInterrupted 方法