1、Java多线程-线程与进程的区别

(1)线程:程序中单独依靠程序进行运行

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

(2)进程:执行中的程序

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

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

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

(4)多线程:

多线程是在一个程序中运行多个任务。

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

2、Java多线程-线程的实现

(1)在Java 中。线程的实现有2种:继承Thread类和实现Runnable 接口

(2)Thread类:~ 是在java.lang 包中定义的,继承~ 类必须重写run()方法。

定义格式:

class className extends Thread {  run() { };   }
public class MyThread extends Thread{
private String name;
public MyThread(String name){
this.name=name;
}
public void run() {
for (int i = 0; i < 1000; i++) {
System.out.println(name+":"+i);
}
super.run(); public class ThreadDemo01 { public static void main(String[] args) {
MyThread t1=new MyThread("A");
MyThread t2=new MyThread("B");
t1.run();
t2.run();
//线程的启动是通过start()。
t1.start();
t2.start();

“A和B是并发执行哦啊”

(3)Runnable 接口

public class MyRunnable implements Runnable{
private String name;
public MyRunnable(String name){
this.name=name;
}
public void run(){
for (int i = 0; i < 1000; i++) {
System.out.println(name+":"+i);
public class ThreadDemo01 {
MyRunnable r1=new MyRunnable("A");
MyRunnable r2=new MyRunnable("B");
Thread t1=new Thread(r1);
Thread t2=new Thread(r2);
t1.start();
t2.start();

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

(1)创建状态:准备好了一个多线程的对象。即new 了一个Thread 对象。

(2)就绪状态:调用了start()方法,等待CPU进行调度。

(3)运行状态:执行 run () 方法

(4)阻塞状态:暂时停止执行,可能将资源交给其他线程使用。

(5)终止状态:(死亡状态):线程销毁。

4、Java多线程-线程的常用方法

(1)取得线程名称:getName ()

(2)取得当前线程对象:currentThread()

(3)判断线程是否启动:isAlive()

(4)线程的强行运行:join()

(5)线程的休眠:sleep()

(6)线程的礼让:yield()

5、Java多线程-线程的优先级

(1)优先级顺序设置:

1-MIN_PRIORITY

10-MAX_PRIORITY

5-NORM_ PRIORITY

如果什么都不设置默认值是5

6、Java多线程-线程同步与死锁

(1)同步代码块:在代码块上加上“synchronized”关键字,则此代码块就称为同步代码块。

(2)同步代码块格式:synchronized(同步对象){   需要同步的代码块;   } (记住:资源共享的时候需要同步。)

(3)同步方法:除了代码块可以同步,方法也是可以同步的。

(4)方法同步格式:synchronized void 方法名称(){}

(5)死锁:学生找工作(高薪)

企业需要你有工作经验(经验)

若无经验又要高薪,即发生死锁。解决死锁只需要一方降低要求即可。

7、Java多线程-线程生命周期

08-Java 多线程编程的更多相关文章

  1. 《java多线程编程核心技术》不使用等待通知机制 实现线程间通信的 疑问分析

    不使用等待通知机制 实现线程间通信的 疑问分析 2018年04月03日 17:15:08       ayf 阅读数:33 编辑 <java多线程编程核心技术>一书第三章开头,有如下案例: ...

  2. Java多线程编程核心技术---学习分享

    继承Thread类实现多线程 public class MyThread extends Thread { @Override public void run() { super.run(); Sys ...

  3. Java多线程编程核心技术---对象及变量的并发访问(二)

    数据类型String的常量池特性 在JVM中具有String常量池缓存的功能. public class Service { public static void print(String str){ ...

  4. Java多线程编程——进阶篇二

    一.线程的交互 a.线程交互的基础知识 线程交互知识点需要从java.lang.Object的类的三个方法来学习:    void notify()           唤醒在此对象监视器上等待的单个 ...

  5. Java多线程编程详解

    转自:http://programming.iteye.com/blog/158568 线程的同步 由于同一进程的多个线程共享同一片存储空间,在带来方便的同时,也带来了访问冲突这个严重的问题.Ja ...

  6. 【Todo】【读书笔记】Java多线程编程指南-设计模式篇

    下了这本书<Java多线程编程指南-设计模式篇>, 还有另一本<JAVA多线程设计模式>,据说内容有重复,结合着看.

  7. Java多线程编程总结(学习博客)

    Java多线程编程总结:网址:http://lavasoft.blog.51cto.com/62575/27069/

  8. Java多线程编程的常见陷阱(转)

    Java多线程编程的常见陷阱 2009-06-16 13:48 killme2008 blogjava 字号:T | T 本文介绍了Java多线程编程中的常见陷阱,如在构造函数中启动线程,不完全的同步 ...

  9. Java多线程编程(二)

    在 Java多线程编程(一) 中的多线程并没有返回值,本文将介绍带返回值的多线程. 要想有返回值,则需要实现新的接口Callable而不再是Runnable接口,实现的方法也改为call()方法,执行 ...

  10. Java多线程编程总结(精华)

    Java多线程编程总结 2007-05-17 11:21:59 标签:多线程 java 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http ...

随机推荐

  1. UIApplication 概述

    原文地址:http://blog.csdn.net/lixing333/article/details/7777015 以前刚学iPhone开发时,觉得UIApplication这个东西特NB,特神秘 ...

  2. [zz]论程序员

    g9老大多年前的趣文: 论程序员 根据钱钟书先生的<论文人>胡改的.聊搏一笑,文责不负.程序员是可嘉奖的,因为他虚心,知道上进,并不拿身分,并不安本分.真的,程序员对于自己,有时比旁人对于 ...

  3. CQOI2009 BZOJ1303 中位数

    首先找出b在数列中的位置mid 用 f[i]记录mid左边从mid往左统计比m小的数与比m大的数的差值为i的个数 用g[i]记录mid右边从mid往右统计比m大的数与比m小的数的差值为i的个数 ..有 ...

  4. 关于oracle出现ORA-06143:连接未打开 解决方案

    原因:程序所在的路径中含有()和中文 用plsql连接正常,连接字符串也检查不出毛病,换到另一个程序照样使用,折腾了半天,最后才发现程序所在的路径中含有()和中文,所以可能导致出现这种很难排查的问题出 ...

  5. invoke Javascript from C# code

    http://justyouraveragegeek.com/blog/index.php/2010/03/winforms-with-a-webbrowsercontrol-fun-with-obj ...

  6. gitlab The repository for this project is empty

    /***************************************************************************** * gitlab The reposito ...

  7. PHP header() 函数详细说明(301、404等错误设置)

    原文来自:http://www.veryhuo.com/a/view/41466.html 如果您刚刚开始学习PHP,可能有许多函数需要研究,今天我们就来学习一下PHP Header()的使用方法,更 ...

  8. 基于tcpdump实例讲解TCP/IP协议

    前言 虽然网络编程的socket大家很多都会操作,但是很多还是不熟悉socket编程中,底层TCP/IP协议的交互过程,本文会一个简单的客户端程序和服务端程序的交互过程,使用tcpdump抓包,实例讲 ...

  9. Handler 引起的内存泄露

    先看一组简单的代码 1 2 3 4 5 6 7 8 9 public class SampleActivity extends Activity { private final Handler mHa ...

  10. 哎哟,我的.NET呀

    今早无意看到一篇文章,看着.Net被喷得越来越惨,终于还是有人忍不住要奋起反抗了哇! 虽然我已经转了java(大致方向)(没想到我是转的java方向!)好吧!其实也不算是转,就像文章所说的,我最多算是 ...