2-Java多线程编程

一.线程与进程

1.线程:程序中单独顺序的控制流。

线程本身依靠程序进行运行。

线程是程序中的顺序控制流,只能使用分配给程序的资源和环境。

2.进程:执行中的程序。

一个进程中可以包含一个或多个线程。

一个进程中至少要包含一个线程。

3.单线程:程序中只存在一个线程,实际上主方法就是一个主线程。

4.多线程:多线程是在一个程序中执行多个任务,并发执行,抢先调度。

多线程的目的是更好的使用CPU资源。

二.线程的常用方法

1.取得线程名称:getName
2.取得当前线程:currentThread
3.判断线程是否启动:isAlive
4.线程的强行运行:join
5.线程的休眠:sleep
6.线程的礼让:yield

三.线程的优先级

 1 package com.example;
 2 class MyThread implements Runnable{
 3     public void run() {
 4         for (int i = 0 ; i < 5; i ++){
 5             try {
 6                 Thread.sleep(1000);
 7                 System.out.println(Thread.currentThread().getName()+":"+i);
 8             } catch (InterruptedException e) {
 9                 e.printStackTrace();
10             }
11
12         }
13     }
14 }
15 public class MyClass {
16     public static void main(String []args){
17         Thread t6 = new Thread(new MyThread(),"a" );
18         Thread t7 = new Thread(new MyThread(),"b" );
19         Thread t8 = new Thread(new MyThread(),"c" );
20         t6.setPriority(Thread.MIN_PRIORITY);
21         t7.setPriority(Thread.NORM_PRIORITY);
22         t8.setPriority(Thread.MAX_PRIORITY);
23         t6.start();
24         t7.start();
25         t8.start();
26
27     }
28 }

四.线程的同步与死锁

1.同步:通过人为的控制和调度,保证共享资源的多线程访问成为线程安全。(线程安全是指线程的调度顺序不影响任何结果,这个时候使用多线程,只需要考虑系统的内存,CPU是否够用即可)。

(1)同步代码块

synchronized(同步对象){

需要同步的代码块;

}

(2)同步方法

synchronized void 方法名称(){}

2.死锁:

学生找工作无经验(高薪);

企业找职工给高薪(经验);

四.线程的实现

1.继承Thread类。

2.实现Runnable接口。

五.线程的状态

1.创建

2.就绪

3.运行

4.阻塞

5.销毁

时间: 2024-08-26 07:54:08

2-Java多线程编程的相关文章

《Java多线程编程核心技术》推荐

写这篇博客主要是给猿友们推荐一本书<Java多线程编程核心技术>. 之所以要推荐它,主要因为这本书写得十分通俗易懂,以实例贯穿整本书,使得原本抽象的概念,理解起来不再抽象. 只要你有一点点Java基础,你就可以尝试去阅读它,相信定会收获甚大! 博主之前网上找了很久都没完整pdf电子版的,只有不全的试读版,这里博主提供免费.清晰.完整版供各位猿友下载: http://download.csdn.net/detail/u013142781/9452683 刚刚已经提到,<Java多线程编程核

Java多线程编程模式实战指南(二):Immutable Object模式--转载

本文由本人首次发布在infoq中文站上:http://www.infoq.com/cn/articles/java-multithreaded-programming-mode-immutable-object.转载请注明作者: 黄文海 出处:http://viscent.iteye.com. 多线程共享变量的情况下,为了保证数据一致性,往往需要对这些变量的访问进行加锁.而锁本身又会带来一些问题和开销.Immutable Object模式使得我们可以在不使用锁的情况下,既保证共享变量访问的线程安

java多线程编程

一.多线程的优缺点 多线程的优点: 1)资源利用率更好2)程序设计在某些情况下更简单3)程序响应更快 多线程的代价: 1)设计更复杂虽然有一些多线程应用程序比单线程的应用程序要简单,但其他的一般都更复杂.在多线程访问共享数据的时候,这部分代码需要特别的注意.线程之间的交互往往非常复杂.不正确的线程同步产生的错误非常难以被发现,并且重现以修复. 2)上下文切换的开销当CPU从执行一个线程切换到执行另外一个线程的时候,它需要先存储当前线程的本地的数据,程序指针等,然后载入另一个线程的本地数据,程序指

Java 多线程编程两个简单的例子

/** * @author gao */ package gao.org; public class RunnableDemo implements Runnable{ @Override public void run() { // TODO Auto-generated method stub for(int i=0;i<10;i++){ System.out.println("新线程输出:"+i); } } public static void main(String []

Java多线程编程基础之线程对象

在进入java平台的线程对象之前,基于基础篇(一)的一些问题,我先插入两个基本概念. [线程的并发与并行] 在单CPU系统中,系统调度在某一时刻只能让一个线程运行,虽然这种调试机制有多种形式(大多数是时间片轮巡为主),但无论如何,要通过不断切换需要运行的线程让其运行的方式就叫并发(concurrent).而在多CPU系统中,可以让两个以上的线程同时运行,这种可以同时让两个以上线程同时运行的方式叫做并行(parallel). 在上面包括以后的所有论述中,请各位朋友谅解,我无法用最准确的词语来定义储

拨开云雾见天日 —— Java多线程编程概念剖析

说到Java多线程编程,大多数人都会想到继承Thread或实现Runnable编程,new 一个Thread实例,调用start()方法,由OS调用即可.具体过程如下: public class MyThread extends Thread {     @Override     public void run() {         System.out.println("MyThread");     }     public static void main(String[] 

java多线程编程中实现Runnable接口方法相对于继承Thread方法的优势

 java多线程创建方法http://blog.csdn.net/cjc211322/article/details/24999163  java创建多线程方法之间的区别http://blog.csdn.net/cjc211322/article/details/25000449 java多线程编程中实现Runnable接口方法相对于继承Thread方法的优势

Java多线程编程(学习笔记)

一.说明 周末抽空重新学习了下多线程,为了方便以后查阅,写下学习笔记. 有效利用多线程的关键是理解程序是并发执行而不是串行执行的.例如:程序中有两个子系统需要并发执行,这时候需要利用多线程编程. 通过多线程的使用,可以编写出非常高效的程序.但如果创建了太多的线程,程序执行的效率反而会降低. 同时上下文的切换开销也很重要,如果创建太多的线程,CPU花费在上下文的切换时间将对于执行程序的时间. 二.Java多线程编程 概念 在学习多线程时,我们应该首先明白另外一个概念. 进程:是计算机中的程序关于某

Java多线程编程详解

线程的同步 由于同一进程的多个线程共享同一片存储空间,在带来方便的同时,也带来了访问冲突这个严重的问题.Java语言提供了专门机制以解决这种冲突,有效避免了同一个数据对象被多个线程同时访问. 由于我们可以通过 private 关键字来保证数据对象只能被方法访问,所以我们只需针对方法提出一套机制,这套机制就是 synchronized 关键字,它包括两种用法:synchronized 方法和 synchronized 块. 1. synchronized 方法:通过在方法声明中加入 synch

Java多线程编程要点

Java多线程编程要点 认识Thread和Runnable Java中 实现多线程有两种途径:继承Thread类或者实现Runnable接口.Runnable是接口,建议用接口的方式生成线程,因为接口可以实现多继承, 况且Runnable只有一个run方法,很适合继承.在使用Thread的时候只需继承Thread,并且new一个实例出来,调用 start()方法即可以启动一个线程. Thread Test = new Thread(); Test.start(); 在使用Runnable的时候需