Thread.sleep(123);
} catch (InterruptedException e) {
e.printStackTrace();
}
for(int i = 0;i<5;i++){
// for(long k= 0; k <100000000;k++);
try {
Thread.sleep(3);
} catch (InterruptedException e) {
e.printStackTrace(); .
}
System.out.println(this.getName()+" :"+i);
}
}
李四 :0
阿三 :1
阿三 :2
阿三 :3
李四 :1
李四 :2
阿三 :4
李四 :3
李四 :4
Process finished with exit code 0
* 一个计数器,计数到100,在每个数字之间暂停1秒,每隔10个数字输出一个字符串
*
*/
public class MyThread extends Thread {
public void run() {
for (int i = 0; i < 100; i++) {
if ((i) % 10 == 0) {
System.out.println("-------" + i);
}
System.out.print(i);
try {
Thread.sleep(1);
System.out.print(" 线程睡眠1毫秒!\n");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
new MyThread().start();
}
}
0 线程睡眠1毫秒!
1 线程睡眠1毫秒!
2 线程睡眠1毫秒!
3 线程睡眠1毫秒!
4 线程睡眠1毫秒!
5 线程睡眠1毫秒!
6 线程睡眠1毫秒!
7 线程睡眠1毫秒!
8 线程睡眠1毫秒!
9 线程睡眠1毫秒!
-------10
10 线程睡眠1毫秒!
11 线程睡眠1毫秒!
12 线程睡眠1毫秒!
13 线程睡眠1毫秒!
14 线程睡眠1毫秒!
15 线程睡眠1毫秒!
16 线程睡眠1毫秒!
17 线程睡眠1毫秒!
18 线程睡眠1毫秒!
19 线程睡眠1毫秒!
-------20
20 线程睡眠1毫秒!
21 线程睡眠1毫秒!
22 线程睡眠1毫秒!
23 线程睡眠1毫秒!
24 线程睡眠1毫秒!
25 线程睡眠1毫秒!
26 线程睡眠1毫秒!
27 线程睡眠1毫秒!
28 线程睡眠1毫秒!
29 线程睡眠1毫秒!
-------30
30 线程睡眠1毫秒!
31 线程睡眠1毫秒!
32 线程睡眠1毫秒!
33 线程睡眠1毫秒!
34 线程睡眠1毫秒!
35 线程睡眠1毫秒!
36 线程睡眠1毫秒!
37 线程睡眠1毫秒!
38 线程睡眠1毫秒!
39 线程睡眠1毫秒!
-------40
40 线程睡眠1毫秒!
41 线程睡眠1毫秒!
42 线程睡眠1毫秒!
43 线程睡眠1毫秒!
44 线程睡眠1毫秒!
45 线程睡眠1毫秒!
46 线程睡眠1毫秒!
47 线程睡眠1毫秒!
48 线程睡眠1毫秒!
49 线程睡眠1毫秒!
-------50
50 线程睡眠1毫秒!
51 线程睡眠1毫秒!
52 线程睡眠1毫秒!
53 线程睡眠1毫秒!
54 线程睡眠1毫秒!
55 线程睡眠1毫秒!
56 线程睡眠1毫秒!
57 线程睡眠1毫秒!
58 线程睡眠1毫秒!
59 线程睡眠1毫秒!
-------60
60 线程睡眠1毫秒!
61 线程睡眠1毫秒!
62 线程睡眠1毫秒!
63 线程睡眠1毫秒!
64 线程睡眠1毫秒!
65 线程睡眠1毫秒!
66 线程睡眠1毫秒!
67 线程睡眠1毫秒!
68 线程睡眠1毫秒!
69 线程睡眠1毫秒!
-------70
70 线程睡眠1毫秒!
71 线程睡眠1毫秒!
72 线程睡眠1毫秒!
73 线程睡眠1毫秒!
74 线程睡眠1毫秒!
75 线程睡眠1毫秒!
76 线程睡眠1毫秒!
77 线程睡眠1毫秒!
78 线程睡眠1毫秒!
79 线程睡眠1毫秒!
-------80
80 线程睡眠1毫秒!
81 线程睡眠1毫秒!
82 线程睡眠1毫秒!
83 线程睡眠1毫秒!
84 线程睡眠1毫秒!
85 线程睡眠1毫秒!
86 线程睡眠1毫秒!
87 线程睡眠1毫秒!
88 线程睡眠1毫秒!
89 线程睡眠1毫秒!
-------90
90 线程睡眠1毫秒!
91 线程睡眠1毫秒!
92 线程睡眠1毫秒!
93 线程睡眠1毫秒!
94 线程睡眠1毫秒!
95 线程睡眠1毫秒!
96 线程睡眠1毫秒!
97 线程睡眠1毫秒!
98 线程睡眠1毫秒!
99 线程睡眠1毫秒!
Process finished with exit code 0
2、线程的优先级和线程让步yield()
t.setPriority(8);
t.start();
线程可以具有的最高优先级。
static int MIN_PRIORITY
线程可以具有的最低优先级。
static int NORM_PRIORITY
分配给线程的默认优先级。
t.start();
t.join();
public JoinThread(String name){
super(name);
}
public void run(){
for(int i=0; i<10; i++){
for(long k=0; k<100000000; k++){}
System.out.println(this.getName() + ": " + i);
}
}
public static void main(String[] args){
Thread t1 = new JoinThread("AA AA");
t1.start();
try{
t1.join(1000); //Join在这里~
} catch(InterruptedException e) {
e.printStackTrace();
}
System.out.println("over");
}
}
然后输出的结果是:
AA AA: 0
AA AA: 1
over
AA AA: 2
AA AA: 3
AA AA: 4
AA AA: 5
AA AA: 6
AA AA: 7
AA AA: 8
AA AA: 9
但是如果把 t.join(1000) 改成 t.join() 的话输出结果会变成:
AA AA: 0
AA AA: 1
AA AA: 2
AA AA: 3
AA AA: 4
AA AA: 5
AA AA: 6
AA AA: 7
AA AA: 8
AA AA: 9
over
这样子就很明显了,t.join(int wait_time);后面的代码想要执行需要满足以下条件之一:
1、线程t死了;
2、等待时间超过wait_time;
如果没有指定wait_time就只能等线程t死了才行了···
hread.join();后是不是指暂停主线程,优先运行thread,当thread线程结束后,再继续主线程?
ps:我在调用thread.join之前启动的线程b,在执行完thread.join()后,b线程不受影响,继续执行,受影响的只是主线程
我感觉 join() 理解成 强行抢占资源 比较好 我觉得发生机制 在栈空间里 就像楼主画的图那样 谁调用join()谁抢占资源 先运行 要么运行完 要么设置占用资源时间
相关推荐
JAVA-多线程 所有文件
基于java的开发源码-多线程程序死锁检查 JCarder.zip 基于java的开发源码-多线程程序死锁检查 JCarder.zip 基于java的开发源码-多线程程序死锁检查 JCarder.zip 基于java的开发源码-多线程程序死锁检查 JCarder.zip ...
java-多线程 test
Java-多线程异步请求统一响应结果 多线程异步请求是指在多个线程同时发起请求,并且在请求过程中不阻塞主线程的执行。这样可以提高程序的并发能力和响应速度。 需要注意的是,在实际的异步请求中,可能需要使用...
狂神说Java-多线程课程全部代码.rar
深入理解-Java-多线程核心知识:跳槽面试必备.docx
java-多线程中的同步与死锁笔记
Java入门基础之一-java多线程doc教学文档资料,详细内容
Java多线程--多线程相关概念
4JAVA编程高级-多线程编程
北京大学Java课程讲义,第七部分多线程
多线程注意:wait()方法的调用要有判定条件常用 while () obj.wait(timeout, nanos); ... // Perform action appropriate to condition } synchronized会影响共享数据,但对其他语句的执行不会有规律了!
java多线程按需交替执行,java新特性。
人工智能-项目实践-多线程-Java多线程高并发实例 Java多线程高并发实例
详细的讲述了多线程的各种用法 Java线程:概念与原理 Java线程:创建与启动 Java线程:线程栈模型与线程的变量 Java线程:线程状态的转换 Java线程:线程的同步与锁 Java线程:线程的交互 Java线程:线程的调度-休眠...
Java多线程--多线程知识点总结和企业真题
Java 线程系列博文总结word化,编目如下,欢迎互相学习交流: Java线程:概念与原理 Java线程:创建与启动 Java线程:线程栈模型与线程的变量 Java线程:线程状态的转换 Java线程:线程的同步与锁 Java线程:...
Java操作Oracle数据库-多线程,演示了使用多线程技术从oracle 数据库中读取函数、存储过程等功能。,具体实现方法请详见源代码。
Java多线程--等待所有子线程执行完的五种方法 Java多线程--等待所有子线程执行完的五种方法 Java多线程--等待所有子线程执行完的五种方法 Java多线程--等待所有子线程执行完的五种方法 Java多线程--等待所有子线程...