Java基础知识学习(六)
多线程
多线程需要注意的地方
优先级、线程同步、消息传递、数据共享、死锁等
Java线程类 Thread,实现接口 Runnable
Thread常用方法
getName | 获得线程名称 |
getPriority | 获得线程优先级 |
jsAlive | 判定线程是否仍在运行 |
join | 等待一个线程终止 |
run | 线程的入口点. |
sleep | 在一段时间内挂起线程 |
start | 通过调用运行方法来启动线程 |
一个线程的例子,当Java程序启动时,一个线程立刻运行,该线程通常叫做程序的主线程,它是产生其他子线程的线程;通常它必须最后完成执行,因为它执行各种关闭动作。
public static void main(String[] args) {
Thread t = Thread.currentThread();
System.out.println("Current thread: " + t);
t.setName("My Thread");
System.out.println("After name change: " + t); try {
for (int n = ; n > ; n--) {
System.out.println(n);
Thread.sleep();
}
} catch (InterruptedException e) {
System.out.println("Main thread interrupted");
}
}
创建线程
实例化一个Thread对象来创建一个线程。Java定义了两种方式:
- 实现Runnable 接口;
- 可以继承Thread类。
创建线程的最简单的方法就是创建一个实现Runnable 接口的类,实现run()方法
class NewThread implements Runnable {
Thread t; NewThread() {
t = new Thread(this, "Demo New Thread");
t.start();
} public void run() {for (int i = ; i > ; i--) {
System.out.println("Child Thread: " + i);
Thread.sleep();
}
}
}
创建线程的另一个途径是创建一个新类来扩展Thread类,然后创建该类的实例。
class NewThread extends Thread {
NewThread() {
super("Demo Thread");
start();
}
public void run() {
for(int i = ; i > ; i--) {
System.out.println("Child Thread: " + i);
Thread.sleep();
}
}
}
创建多线程
public static void main(String[] args) {
new NewThread();
new NewThread();
new NewThread();
System.out.println("Main thread exiting.");
}
使用多线程要理解 join()方法,主线程会等待子线程结束在继续执行
つづけ
Java基础知识学习(六)的更多相关文章
- Java基础知识学习(九)
GUI开发 先前用Java编写GUI程序,是使用抽象窗口工具包AWT(Abstract Window Toolkit).现在多用Swing.Swing可以看作是AWT的改良版,而不是代替AWT,是对A ...
- java基础知识学习笔记
本文知识点以js为参照.对比分析得出笔记.JavaScript之所以叫JavaScript是打算借助java推广自己.虽然都是开发语言,但JavaScript一开始主要运行在 客户端,而java主要运 ...
- Java基础知识学习(三)
面向对象部分 首先要了解面向对象的思想,与C#一致,都是面向对象的语言 访问修饰符 public 共有的,对所有类可见. protected 受保护的,对同一包内的类和所有子类可见. private ...
- Java基础知识学习(一)
部门接了新项目,后台使用Java框架play framework,前端是html,前后台通过rest交互,能够支持多端的互联网架构. 因为之前没有Java基础,前端使用的也很少,决定深入学习一下Jav ...
- Java基础知识学习(二)
Java语法基础 数据类型.类型转换.运算符.逻辑运算符.参考C#,基本一致 输入输出 输出 System.out.print("abc"); System.out.printf( ...
- java基础知识学习 内存相关
Java 内存分配策略 静态存储区(方法区):主要存放静态数据.全局 static 数据和常量.这块内存在程序编译时就已经分配好,并且在程序整个运行期间都存在. 栈区 :当方法被执行时,方法体内的局部 ...
- java基础知识(六)日期处理
一.日期处理类 在 JDK 1.1 之前,类 Date 有两个其他的函数.它允许把日期解释为年.月.日.小时.分钟和秒值.它也允许格式化和解析日期字符串.不过,这些函数的 API 不易于实现国际化.从 ...
- Java基础知识学习(八)
IO操作 5个重要的类分别是:InputStream.OutStream.Reader.Writer和File类 面向字符的输入输出流 输入流都是Reader的子类, CharArrayReader ...
- Java基础知识学习(七)
线程(续) 线程同步 当两个或两个以上的线程需要共享资源,它们需要某种方法来确定资源在某一刻仅被一个线程占用.达到此目的的过程叫做同步(synchronization) 可以用两种方法同步化代码.两者 ...
随机推荐
- AES加密类
代码: using System; using System.IO; using System.Security.Cryptography; using System.Text; namespace ...
- Entity Framework 实体框架的形成之旅--几种数据库操作的代码介绍(9)
本篇主要对常规数据操作的处理和实体框架的处理代码进行对比,以便更容易学习理解实体框架里面,对各种数据库处理技巧,本篇介绍几种数据库操作的代码,包括写入中间表操作.联合中间表获取对象集合.递归操作.设置 ...
- Mac OS 的一点历史: Mac OS, Mac OSX 与Darwin
作为收购 NeXT 公司的结果,苹果公司获得了 NeXTSTEP 架构中的 Mach 和 Objective-C 等设计.尽管 NeXTSTEP 本身已经不再发展了,但是其中的组件在 OS X 中获得 ...
- 暴风冯鑫:去美国香港的99%都亏,互联网公司打死都要回A股
“上市之后,我回答得最多的两句话:一句是运气好:另一句是有好运气要好好地使用它.” 5月18日,暴风科技上市55天后,首享科技大厦办公室里,暴风科技CEO冯鑫这样对我说. 在经历了36个涨停之 ...
- 背水一战 Windows 10 (1) - C# 6.0 新特性
[源码下载] 背水一战 Windows 10 (1) - C# 6.0 新特性 作者:webabcd 介绍背水一战 Windows 10 之 C# 6.0 新特性 介绍 C# 6.0 的新特性 示例1 ...
- 清除svn账户账号密码
1. 2. 3. 4. 5.再次访问时,会弹出要求输入用户名和密码:只是清除记住的用户名和密码.
- Type mismatch: cannot convert from java.sql.PreparedStatement to com.mysql.jdbc.PreparedStatement
Connection.prepareStatement()函数出错,提示: Type mismatch: cannot convert from java.sql.PreparedStatement ...
- Python语言and-or的用法
[原]python语言的 and-or 常常被用来实现类C语言中的三元运算符 : ? , 更为骚气的写法是 xxx and xxx or xxx and xxx or xxx,这样就可以可以做到 ...
- PHP内核探索之变量(6)- 后续内核探索系列大纲备忘
年前因为工作比较饱和,现在又忙着换工作的事情,基本停止了对博文的更新.后续的博文,还是慢慢补上吧. 为了不至于过于发散,先搞个未成形的大纲,如下: PHP内核探索之变量 不平凡的字符串 PHP内核探 ...
- Guava学习笔记:Immutable(不可变)集合
不可变集合,顾名思义就是说集合是不可被修改的.集合的数据项是在创建的时候提供,并且在整个生命周期中都不可改变. 为什么要用immutable对象?immutable对象有以下的优点: 1.对不可靠的客 ...