08-Java 多线程编程
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 多线程编程的更多相关文章
- 《java多线程编程核心技术》不使用等待通知机制 实现线程间通信的 疑问分析
不使用等待通知机制 实现线程间通信的 疑问分析 2018年04月03日 17:15:08 ayf 阅读数:33 编辑 <java多线程编程核心技术>一书第三章开头,有如下案例: ...
- Java多线程编程核心技术---学习分享
继承Thread类实现多线程 public class MyThread extends Thread { @Override public void run() { super.run(); Sys ...
- Java多线程编程核心技术---对象及变量的并发访问(二)
数据类型String的常量池特性 在JVM中具有String常量池缓存的功能. public class Service { public static void print(String str){ ...
- Java多线程编程——进阶篇二
一.线程的交互 a.线程交互的基础知识 线程交互知识点需要从java.lang.Object的类的三个方法来学习: void notify() 唤醒在此对象监视器上等待的单个 ...
- Java多线程编程详解
转自:http://programming.iteye.com/blog/158568 线程的同步 由于同一进程的多个线程共享同一片存储空间,在带来方便的同时,也带来了访问冲突这个严重的问题.Ja ...
- 【Todo】【读书笔记】Java多线程编程指南-设计模式篇
下了这本书<Java多线程编程指南-设计模式篇>, 还有另一本<JAVA多线程设计模式>,据说内容有重复,结合着看.
- Java多线程编程总结(学习博客)
Java多线程编程总结:网址:http://lavasoft.blog.51cto.com/62575/27069/
- Java多线程编程的常见陷阱(转)
Java多线程编程的常见陷阱 2009-06-16 13:48 killme2008 blogjava 字号:T | T 本文介绍了Java多线程编程中的常见陷阱,如在构造函数中启动线程,不完全的同步 ...
- Java多线程编程(二)
在 Java多线程编程(一) 中的多线程并没有返回值,本文将介绍带返回值的多线程. 要想有返回值,则需要实现新的接口Callable而不再是Runnable接口,实现的方法也改为call()方法,执行 ...
- Java多线程编程总结(精华)
Java多线程编程总结 2007-05-17 11:21:59 标签:多线程 java 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http ...
随机推荐
- PHP安装编译配置参考
编辑安装php的参考配置: ./configure --prefix=/usr/local/php-5.6.8 --with-config-file-path=/usr/local/php-5.6.8 ...
- Linux内存管理之地址映射
写在前面:由于地址映射涉及到各种寄存器的设置访问,Linux对于不同体系结构处理器的地址映射采用不同的方法,例如对于i386及后来的32位的Intel的处理器在页式映射时采用的是2级页表映射,而对于I ...
- mantis增加密码修改
解决方式就是考虑修改Mantisbt PHP程序,增加一个密码修改框,这样管理员就可以直接修改用户密码了. 操作步骤如下: 1) 修改文件 manage_user_edit_page.p ...
- AmazeUI布局
AmazeUI使用了12列的响应式网络系统.使用时需在外围容器上添加.am-g class,在列上添加.am-u-[sm|md|lg]-[1-12] class,然后根据不同的屏幕需求设置不同的宽度. ...
- JS手机定位地理位置
/** * 以下为html5代码,获取地理位置 */ /** * 设置地址 */ function setAddress(json) { var position = document.getElem ...
- C语言----变量及作用域 、 指针 、 指针和数组 、 进程空间 、 字符串
1 使用程序来模拟放球.取球的问题 1.1 问题 栈是一种特殊的线性表,它的逻辑结构和线性表相同,只是其运算规则较线性表有更多的限制,故又称为运算受限的线性表. 栈的定义是限制仅在表的一端进行插入和删 ...
- CMAKE语法
[语法] 注释 # : #我是注释 命令语法 COMMAND: COMMAND(参数1 参数2 ...) 字符串列 A;B;C //分号分割或空格分隔的值 变量 ...
- 针对无线信道衰落特性分析3G,4G,5G的关键技术异同点
1 无线信道特性对3G系统的影响 2
- java 函数 运算符
1. 函数的重载:多个函数名相同,根据参数列表(个数,类型)选择执行不同函数,不能按返回值类型区分. 2. 运算符: / /两头都是int类型 则做求商运算,如果一头有小数就做正常的除运算 5/2 / ...
- Java线程的生命周期
线程的生命周期包括:新建(New).就绪(Runnable).运行(Running).阻塞(Blocked)和死亡(Dead)5种状态.线程状态转换图如下: 1.新建状态(New) 当程序使用new关 ...