java 多线程,sleep()和wait()
java 线程可谓是java中重要的一个机制,在说线程之前需要知道什么是进程,进程和线程的关系是是什麽?
1.什么是进程?什么是线程?
进程:用句简单的粗俗的来说,进程就是程序。进程是一个正在运行的程序!比如:打开一个记事本程序,那么这个正在运行的记事本程序就是一个进程。
线程:线程是由进程所创建来执行某个功能的一个机制。那么也就是说,没有进程就没有线程。一个线程只能对应一个进程,一个进程却可以有多个线程的存在。
2.那么在java中如何创建一个线程?
在java中创建线程有两个方法:
一:通过类继承Thread实现线程创建。
例:class Thread1 extends Thread {
public void run() {
System.out.println("hello, the world!");
}
}
public class Text {
public void main(String[] args) {
new Thread1().start();
}
}
二:通过实现Runnable来创建线程
例:class Tread2 implements Runnable {
public void run() {
System.out.println("wellcome to Java world!");
}
}
public void Text {
public void main(String[] args) {
new Thread(new Thread2()).start();
}
}
同样两种方法都可以通过匿名内部类的方式创建线程。
3. sleep()和wait()是什麽?他们有什么区别,对同步有什么影响。
sleep():是线程的一个睡眠方法,它可以接收long类型的参数作为睡眠的时间!当线程运行该方法时,线程会进入睡眠状态,把cpu时间片让出给其他线程使用。当参数时间之后,线程会自动唤醒,等待下一个时间片段继续执行。在睡眠期间,sleep()不会释放线程锁,也就是或,该线程所访问的同步块会一直被该线程占用,别的线程无法访问,直到线程重新启动,并释放线程锁。
wait():是属于Object的类,wait()和sleep()都是使线程进入睡眠状态,但是wait()需要别的线程去使用Thread.notify()唤醒被wait()睡眠的线程,否则线程会一直处于睡眠状态,知道程序关闭。如果该线程正占用着同步资源,那么一直不唤醒,就会导致同步资源无法访问,避免这样,所以当wait()睡眠的线程会释放线程锁,让出cpu时间片段,当被唤醒的时候,该线程会重新等待下一次时间片段,重新进入同步块。
4.几个常用的线程方法
Thread th = Thread.currentThread(); 用于获取运行当前代码片段的线程
long getId() 返回该线程的标识符
String getName() 返回该线程的名称
int getPriority() 返回线程的优先级
Thread.state getState(); 获取线程的状态
boolean isAlive(); 测试线程是否处于活动状态
boolean isDaemon(); 测试线程是否为守护线程
boolean isInterrupted(); 测试线程是否已经中断
java 多线程,sleep()和wait()的更多相关文章
- 40个Java多线程问题总结
前言 Java多线程分类中写了21篇多线程的文章,21篇文章的内容很多,个人认为,学习,内容越多.越杂的知识,越需要进行深刻的总结,这样才能记忆深刻,将知识变成自己的.这篇文章主要是对多线程的问题进行 ...
- Java多线程基础知识篇
这篇是Java多线程基本用法的一个总结. 本篇文章会从一下几个方面来说明Java多线程的基本用法: 如何使用多线程 如何得到多线程的一些信息 如何停止线程 如何暂停线程 线程的一些其他用法 所有的代码 ...
- Java多线程系列--“JUC锁”03之 公平锁(一)
概要 本章对“公平锁”的获取锁机制进行介绍(本文的公平锁指的是互斥锁的公平锁),内容包括:基本概念ReentrantLock数据结构参考代码获取公平锁(基于JDK1.7.0_40)一. tryAcqu ...
- Java多线程系列--“JUC锁”04之 公平锁(二)
概要 前面一章,我们学习了“公平锁”获取锁的详细流程:这里,我们再来看看“公平锁”释放锁的过程.内容包括:参考代码释放公平锁(基于JDK1.7.0_40) “公平锁”的获取过程请参考“Java多线程系 ...
- Java多线程--让主线程等待子线程执行完毕
使用Java多线程编程时经常遇到主线程需要等待子线程执行完成以后才能继续执行,那么接下来介绍一种简单的方式使主线程等待. java.util.concurrent.CountDownLatch 使用c ...
- Java多线程 2 线程的生命周期和状态控制
一.线程的生命周期 线程状态转换图: 1.新建状态 用new关键字和Thread类或其子类建立一个线程对象后,该线程对象就处于新生状态.处于新生状态的线程有自己的内存空间,通过调用start方法进入就 ...
- java 多线程 1 线程 进程
Java多线程(一).多线程的基本概念和使用 2012-09-10 16:06 5108人阅读 评论(0) 收藏 举报 分类: javaSE综合知识点(14) 版权声明:本文为博主原创文章,未经博 ...
- 一起阅读《Java多线程编程核心技术》
目录 第一章 Java多线程技能 (待续...)
- 第一章 Java多线程技能
1.初步了解"进程"."线程"."多线程" 说到多线程,大多都会联系到"进程"和"线程".那么这两者 ...
- java从基础知识(十)java多线程(下)
首先介绍可见性.原子性.有序性.重排序这几个概念 原子性:即一个操作或多个操作要么全部执行并且执行的过程不会被任何因素打断,要么都不执行. 可见性:一个线程对共享变量值的修改,能够及时地被其它线程看到 ...
随机推荐
- Linux的基本使用
检测某个地址是否可以通信:ping xx.xx.xx.xx 检测某个端口是否开启:telnet xx.xx.xx.xx port 端口:用来区别不同服务 常用命令: 创建一个目录 /data mkdi ...
- mysql查询sql中检索条件为大批量数据时处理
当userIdArr数组值为大批量时,应如此优化代码实现
- ORACLE 36进制和10进制,互相转换函数
第一部分 --36转10进制 create or replace function f_36to10 (str varchar) return int is returnValue int; s ...
- WPF前台数据验证(红框)Validation.ErrorTemplate 附加属性
WPF 显示验证错误的默认方式是在控件周围绘制红色边框.通常需要对此方法进行自定义,以通过其他方式来显示错误.而且,默认情况下不会显示与验证错误关联的错误消息.常见的要求是仅当存在验证错误时才在工具提 ...
- Android-基本控件和详解四种布局方式
转自:https://www.cnblogs.com/ludashi/p/4883915.html 一.常用基本控件 1.TextView 看到Android中的TextView, 我不禁的想到了iO ...
- 同一世界服务器架构--Erlang游戏服务器
Erlang最大的优点是方便,很多基础功能都已经集成到Erlang语言中.之前用C++写服务器的时候,管理TCP连接很繁琐,需要写一大堆代码来实现.底层的框架需要写很多代码实现,这样既浪费时间 ...
- 九度OJ 1115:数字求和 (基础题)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:2396 解决:1507 题目描述: 给定一个正整数a,以及另外的5个正整数,问题是:这5个整数中,小于a的整数的和是多少? 输入: 输入一行 ...
- mybatis入门(十)
mybatis和hibernate本质区别和应用场景 hibernate:是一个标准ORM框架(对象关系映射).入门门槛较高的,不需要程序写sql,sql语句自动生成了. 对sql语句进行优化.修改比 ...
- PHP开发工作心得
一.扎实PHP自身的基础知识.函数.常量等,尽量用内置的方法解决这个问题(由于个人写的往往运行效率没有内置方法高): 二.代码尽量少的实现功能(由于PHP的运行事实上是,将咱们的代码先处理成底层语言进 ...
- css position弹性盒子测试
总结: 1.利用样式height:100%设置div高度为全屏时候必须设置所有的父元素,但是父元素那么多,不可控,所以此法不可行: 2.设置父框架的padding为100px,div进行float,p ...