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多线程(下)
首先介绍可见性.原子性.有序性.重排序这几个概念 原子性:即一个操作或多个操作要么全部执行并且执行的过程不会被任何因素打断,要么都不执行. 可见性:一个线程对共享变量值的修改,能够及时地被其它线程看到 ...
随机推荐
- java stoi
package string.string1_4; import java.util.Scanner; public class StrToInt { /** * 将str转换为int整数 * 1. ...
- SQL Cursor生命周期
阅读导航 1 Cursor Step 1.1 Create cursor 1.2 Parse statement 1.3 descript and define 1.4 Bind variable ...
- toad for oracle中文显示乱码
toad for oracle中文显示乱码 数据入库的时候中文显示正常,在toad for oracleclient和页面显示都是乱码!!! 原因:在数据入库时候出现的问题. 解决方式: 在系统变量中 ...
- ASP.NET车辆管理系统100%源代码
系统开发环境为VS2010.採用ASP.NET框架.数据库採用SQL Server.系统採用Ajax,具有:GPS导航(实时监控报警).申请审核.流程查看及短信息发送等功能.这个系统界面和功能是我认为 ...
- iOS不用上架就能下载安装ipa应用内测:使用FIR.im发布自己的移动端APP
本文转自:http://www.cnblogs.com/imzzk/p/firim.html 一次很偶然的机会知道fir.im,这家公司主要的产品就是帮助开发者方便便捷地发布iOS或者Android应 ...
- Avro Parquet
行 支持数据追加 列 频繁进行小部分列查询
- TControl,TWinControl和TGraphicControl的显示函数
-------------------------- 显示隐藏刷新 -------------------------- TControl = class(TComponent)procedure S ...
- 前端photoshop 切图神器cutterman
1. 切图真的是就件很费力的事情,接下有给大家提供一个工具,本人觉得还不错 http://www.cutterman.cn/ 请参考这个网站,安装方法也有,很简单,我就不说了,赶紧点连接去注册帐号吧
- listview 没数据内容时显示一个提示文本
listview和textview 1:1.listview无内容的时候本身是不显示的,所以textview会显示 getlistview获取系统定义的listview
- NSDate的具体使用(转载)
NSDate的具体使用 时间与日期处理 主要有以下类: NSDate -- 表示一个绝对的时间点 NSTimeZone -- 时区信息 NSLocale -- 本地化信息 NSDateComponen ...