线程(java编程思想摘录和代码实验)
来源:互联网 发布:淘宝上洗照片可靠吗 编辑:程序博客网 时间:2024/06/07 15:49
java编程思想摘录和代码实验(一)。线程基础
一。有两种方法创建新的线程。
第一种
定义线程类实现Runnable接口
Thread myThread = new Thead(target) //target为Runnable接口类型。
Runnable中只有一个方法:
public void run();用以定义线程运行体。
使用Runnable接口可以为多个线程提供共享的数据。
在实现Runnable接口的类的run方法定义中可以使用Thread的静态方法。
public static Thread currentThread() 获取当前线程的引用
第二种
可以定义一个Thread的子类并重写run方法如下:
class MyThread extends Thead {
public void run(){...}
}
然后生成该类的对象:
MyThread myThread = new MyThread(...)
例子:
package com.thread.test;
public class TestThread1 {
public static void main(String[] args) {
Runner1 r = new Runner1();
Thread t = new Thread(r);
t.start();
for(int i = 0; i < 20; i++) {
System.out.println("Main Thread:---------" + i);
}
}
}
class Runner1 implements Runnable {
public void run() {
for(int i = 0; i <20; i++) {
System.out.println("Runner1: " + i);
}
}
}
或者:
package com.thread.test;
public class TestThread11 {
public static void main(String[] args) {
Runner11 ru = new Runner11();
ru.start();
for(int i = 0; i < 100; i++) {
System.out.println("main--------------" + i);
}
}
}
class Runner11 extends Thread{
public void run() {
for(int i = 0; i < 100; i++) {
System.out.println("run:" + i);
}
}
}
推荐使用接口,因为实现接口的时候还可以继承其他类。
第二种方法 ,只能继承一个类,所以不推荐。
------------------------------------------------------------------------------------------------------------
(二)sleep方法
方法:
isAlive()-判断线程是否还“活”着,即线程是否还未终止
getPriority()-获得优先级数值
setPriority()
Thread.sleep()-将当前线程睡眠指定毫秒数
join()-调用某线程的该方法,将当前线程与该线程“合并”,即等待该线程结束,再恢复当前线程的运行。
yield()-让出CPU,当前线程进入就绪队列等待调度。
wait()-当前线程进入对象的wait pool
notify()-唤醒对象的wait pool中的一个
notifyAll()-唤醒对象的wait pool中所有等待线程
---------------------------------
sleep(静态方法)/join/yield方法
sleep方法:
可以调用Thread的静态方法,public static void sleep(long millis)throws InterruptedException
使得当前线程休眠(暂时停止执行millis毫秒)
由于是静态方法,sleep可以由类名直接调用:Thread.sleep()
join方法:
合并某个线程
yield方法:
让出CPU,给其他线程执行的机会
package com.thread.test;import java.util.Date;/** * interruptpublic void interrupt()中断线程。 如果当前线程没有中断它自己(这在任何情况下都是允许的),则该线程的 checkAccess 方法就会被调用,这可能抛出 SecurityException。 如果线程在调用 Object 类的 wait()、wait(long) 或 wait(long, int) 方法,或者该类的 join()、join(long)、join(long, int)、sleep(long) 或 sleep(long, int) 方法过程中受阻,则其中断状态将被清除,它还将收到一个 InterruptedException。 如果该线程在可中断的通道上的 I/O 操作中受阻,则该通道将被关闭,该线程的中断状态将被设置并且该线程将收到一个 ClosedByInterruptException。 如果该线程在一个 Selector 中受阻,则该线程的中断状态将被设置,它将立即从选择操作返回,并可能带有一个非零值,就好像调用了选择器的 wakeup 方法一样。 如果以前的条件都没有保存,则该线程的中断状态将被设置。中断一个不处于活动状态的线程不需要任何作用。 抛出: SecurityException - 如果当前线程无法修改该线程 * */public class TestInterrupt { public static void main(String[] args) { MyThread thread = new MyThread(); thread.start(); try{ Thread.sleep(10000);//main线程睡眠 }catch(InterruptedException e) {} thread.interrupt();//中断线程。(同时可以让子线程结束) }}class MyThread extends Thread { public void run() { while(true) { System.out.println("===" + new Date() + "==="); try { sleep(1000); }catch(InterruptedException e) { System.out.println("aaaaaa"); return ; } } }}
输出:
===Tue Nov 18 10:03:19 CST 2014===
===Tue Nov 18 10:03:20 CST 2014===
===Tue Nov 18 10:03:21 CST 2014===
===Tue Nov 18 10:03:22 CST 2014===
===Tue Nov 18 10:03:23 CST 2014===
===Tue Nov 18 10:03:24 CST 2014===
===Tue Nov 18 10:03:25 CST 2014===
===Tue Nov 18 10:03:26 CST 2014===
===Tue Nov 18 10:03:27 CST 2014===
===Tue Nov 18 10:03:28 CST 2014===
aaaaaa
-----------------------------------------------------------------------------------------------------
- 线程(java编程思想摘录和代码实验)
- java 编程思想 笔记摘录
- Java编程思想第三版摘录
- Java编程思想第三版摘录
- java编程思想 复用类总结摘录
- Java编程思想之多线程
- Java编程思想摘录--第1章 对象入门
- 关于编程思想和《java编程思想》
- Java编程思想 之 线程简单应用
- Java编程思想 之 线程协作
- 读C++编程思想的摘录
- Java 编程惯例摘录
- 《java编程思想》——代码
- 《JAVA编程思想》读书笔记-代码复用
- Java 多线程 捕获线程异常 Java编程思想读书笔记
- [java 编程思想学习笔记] java 线程状态
- Java Socket网络编程(网上摘录和个人经验)
- 传递和返回对象---java编程思想
- Kuangbin带你飞专题一 简单搜索
- iOS开发编码建议与编程经验
- Spring和MyBatis环境整合
- WM_DEVICECHANGE实现USB设备热插拔
- BZOJ2005能量采集
- 线程(java编程思想摘录和代码实验)
- __attribute__ directives in Objective-C
- ListView 加载数据 Holder 数据项重复 , 乱序
- 程序编写和调试的思考
- 面向接口编程
- HDU 1102Constructing Roads
- Android开发60条技术经验总结
- BMOB--QQ第三方登陆
- 终于明白了虚函数、纯虚函数和接口的实用方法和意义