篇一 :Java多线程总结

基本概念:

并发性和并行性:

并发性指的是同一时刻只能有一条指令执行,但是多个进程指令被快速轮换执行

并行性是指同一时刻,有多条指令在多个处理器上同时执行,使得在宏观上具有多个进程同时执行的结果

临界区:修改共享资源的代码区

1、线程实现有三种方式:

(1)类ThreadName(引用为a)继承Thread,然后调用a.start();

(2)类ThreadName(引用为b)实现接口Runnable,然后new Thread(b).start();

(3)类ThreadName(引用为c)实现接口Callable<Integer>,然后call方法作为执行体,会有返回值。

声明FutureTask<Integer> task = new FutureTask<Integer>(c);

Thead thread = new Thread(task).start();

一般采用实现接口的方式实现,有以下有优点:

使用实现Runnable接口和Callable接口的可以继续实现其他接口或继承

在这种方式下,多个线程可以共享一个target对象(共享线程类的实例属性),所以非常适合多个相同线程处理同一份资源的情况 实现Runnable和Callable的最大区别在于Callable是调用call方法,有返回值的

…… …… 余下全文

篇二 :java多线程总结(含代码)

Java多线程总结

Java多线程总结

目标:

理解程序、线程和进程的概念

理解多线程的概念

掌握线程的各种状态

熟练使用Thread类、Runnable接口创建线程

熟练使用线程各种方法

1、程序、线程、进程

进程:调度和和独立运行的单位,使用了CPU

线程:是轻量级的进程,是进程的一个独立的连

2、线程的五种状态

新建:当一个

间没有占用CPU

CPU开始执行线程run()方法,子类必须重写run方法; 的使用权转让其他线程

run方法执行完毕时,线程进入死亡状态;

3

创建线程的两种方法:

(1)继承Thread类

(2)实现Runnable接口

继承Thread 类:

public class ThreadDemo extends Thread{

public void run(){

System.out.println(“Hello Java Thread”);

}

public static void main(String[] args){

Java多线程总结

new ThreadDemo().start();

}

…… …… 余下全文

篇三 :Java多线程总结

Java多线程总结

线程的四种状态:

就绪Runable——运行中Running——阻塞Blocked——死亡Dead(结束)

线程的状态转换图

线程在一定条件下,状态会发生变化。线程变化的状态转换图如下:

1、新建状态(New):新创建了一个线程对象。

2、就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法。该状态的线程位于可运行线程池中,变得可运行,等待获取CPU的使用权。

3、运行状态(Running):就绪状态的线程获取了CPU,执行程序代码。

4、阻塞状态(Blocked):阻塞状态是线程因为某种原因放弃CPU使用权,暂时停止运行。直到线程进入就绪状态,才有机会转到运行状态。阻塞的情况分三种:

(一)、等待阻塞:运行的线程执行wait()方法,JVM会把该线程放入等待池中。

(二)、同步阻塞:运行的线程在获取对象的同步锁时,若该同步锁被别的线程占用,则JVM会把该线程放入锁池中。

(三)、其他阻塞:运行的线程执行sleep()或join()方法,或者发出了I/O请求时,JVM会把该线程置为阻塞状态。当sleep()状态超时、join()等待线程终止或者超时、或者I/O处理完毕时,线程重新转入就绪状态。

…… …… 余下全文

篇四 :JAVA中实现多线程总结

我们知道,在操作系统级别上软件的运行一般都是以进程为单位,而在每个进程的运行过程中允许同时并发执行多个不同线程,这就使得一个程序能同时执行不同的操作。使用多线程的目的是为了最大限度地利用计算机CPU资源。JAVA程序字节码最终是在JVM虚拟机下运行的,同一虚拟机进程中的不同操作都是通过多线程来运行的。在JAVA虚拟机中,线程常用有单线程和多线程,单线程指程序执行过程只是一个有效操作的序列,不同操作都有着明确的先后顺序;而多线程允许同时进行着不同的操作,这些不同的操作同时并发进行着,并由CPU时钟频率根据不同的调度方式对他们进行执行调度。

在JAVA语言中提供了丰富的多线程操纵接口,提供了各类不同的线程实现方法供我们选择,功能非常强大。在手机软件设计中,由于同样需要执行网络连接(基于HTTP的高级Internet协议通讯)、UI调度等待、UI显示幻化、游戏控制等操作需要通过后台的数据运算或UI不断更新等操作。因此在J2ME中,KVM虚拟机也提供了功能强大的多线程API,使我们同样能在J2ME中实现线程的并发运算。

在J2ME中,主要有以下三种方法实现多线程。

一、继承Thread类(java.lang.Thread)

…… …… 余下全文

篇五 :Java多线程总结

多线程总结

在学习编程的过程中,我觉得不止要获得课本的知识,更多的是通过学习技术知识提高解决问题的能力,这样我们才能走在最前方,更多Java学习,请登陆疯狂java官网。

1.重写线程Thread,Runnable运行的是run方法,当调用线程start()时,会运行其run方法,

也可以主动去调用,只不过不在同一个线程里。

当一个线程既继承了Thread又继承Runnable,其thread必须调用target.run()实现对runnable的方法调用。

2.Object:的三种线程方法 wait() ,notify() ,notifyAll()

在某个线程里执行某个对象锁的wait方法会暂停该线程的运行,在另外一条线程里利用该锁的notify方法

可以唤醒某个该对象锁所在的线程;当该对象锁在多个线程里wait的时候,可以使用notifyAll唤醒运行。

3.线程调度-休眠/优先级/让步/合并/守护线程

休眠。静态方法Thread.sleep();谁调用谁休眠

对于优先级高的线程获取CPU机率比较大,并不一定优先级低的运行不了线程的让步含义就是使当前运行着线程让出CPU资源,但是然给谁不知道,仅仅是让出,线程状态回到可运行状态。Thread.yield()

…… …… 余下全文

篇六 :C++多线程总结

C++线程总结

目录

1使用CreateThread函数生成的线程 ............................................................................................ 2

1.1CreateThread函数原型 ....................................................................................................... 2

1. 2 线程、线程句柄、线程ID的区别 ................................................................................. 3

1.2.1 线程与线程句柄的区别 ......................................................................................... 3

1.2.2 线程句柄与线程ID的区别 ................................................................................... 3

…… …… 余下全文

篇七 :多线程编程知识总结

多线程编程

一、 问题的提出

1.1问题的引出

编写一个耗时的单线程程序:

新建一个基于对话框的应用程序SingleThread,在主对话框IDD_SINGLETHREAD_DIALOG添加一个按钮,ID为IDC_SLEEP_SIX_SECOND,标题为“延时6秒”,添加按钮的响应函数,代码如下:

void CSingleThreadDlg::OnSleepSixSecond()

{

Sleep(6000); //延时6秒

}

编译并运行应用程序,单击“延时6秒”按钮,你就会发现在这6秒期间程序就象“死机”一样,不在响应其它消息。为了更好地处理这种耗时的操作,我们有必要学习——多线程编程。

1.2多线程概述

进程和线程都是操作系统的概念。进程是应用程序的执行实例,每个进程是由私有的虚拟地址空间、代码、数据和其它各种系统资源组成,进程在运行过程中创建的资源随着进程的终止而被销毁,所使用的系统资源在进程终止时被释放或关闭。

线程是进程内部的一个执行单元。系统创建好进程后,实际上就启动执行了该进程的主执行线程,主执行线程以函数地址形式,比如说main或WinMain函数,将程序的启动点提供给Windows系统。主执行线程终止了,进程也就随之终止。

…… …… 余下全文

篇八 :Java多线程编程总结

Java线程:概念与原理

一、操作系统中线程和进程的概念


现在的操作系统是多任务操作系统。多线程是实现多任务的一种方式。


进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程中可以启动多个线程。比如在Windows系统中,一个运行的exe就是一个进程。

线程是指进程中的一个执行流程,一个进程中可以运行多个线程。比如java.exe进程中可以运行很多线程。线程总是属于某个进程,进程中的多个线程共享进程的内存。

“同时”执行是人的感觉,在线程之间实际上轮换执行。

二、Java中的线程


在Java中,“线程”指两件不同的事情:
1、java.lang.Thread类的一个实例;

2、线程的执行。

使用java.lang.Thread类或者java.lang.Runnable接口编写代码来定义、实例化和启动新线程。

一个Thread类实例只是一个对象,像Java中的任何其他对象一样,具有变量和方法,生死于堆上。

Java中,每个线程都有一个调用栈,即使不在程序中创建任何新的线程,线程也在后台运行着。

一个Java应用总是从main()方法开始运行,mian()方法运行在一个线程内,它被称为主线程。

…… …… 余下全文