设为首页 加入收藏

TOP

浅谈对多线程的理解(一)(二)
2019-09-17 18:45:18 】 浏览:52
Tags:谈对多 线程 理解
ad().getName() + " " + i); 12 Thread.sleep(10); 13 } 14 return Thread.currentThread().getName(); 15 } 16 ? 17 public static void main(String[] args) throws Exception { 18 // 3.创建线程类的实例对象 19 MyThread3 myThread3 = new MyThread3(); 20 // 4.创建FutureTask的实例对象来包装线程类实例对象 21 FutureTask futureTask = new FutureTask(myThread3); 22 // 5.创建Thread的实例对象来包装Future类的实例对象 23 Thread t = new Thread(futureTask); 24 t.start(); 25 for (int i = 0; i < 100; i++) { 26 System.out.println(Thread.currentThread().getName() + " " + i); 27 Thread.sleep(10); 28 } 29 // 打印出call()方法的返回值 30 System.out.println(futureTask.get()); 31 } 32 }

4. 三种方式的对比

  1. 采用继承Thread类这种方式来创建线程,编写简单,可是由于Java不支持多继承,所以不能再继承其他父类。

  2. 采用实现Runnable接口或Callable接口,可以继承其他类,多个线程可以共享同一个target对象,非常适合多个线程来处理同一资源的情况,可以更好地体现面向对象的特点,不过编写比较复杂。

  3. 采用实现Callable接口,call( )方法是线程执行体,有返回值,可以抛出异常,其功能比run( )方法更强大。


三. 线程的生命周期


四. 控制线程

Thread类的工具方法

join( ):让一个线程等待另外一个线程完成的方法,当在某个程序执行流中调用其他线程的join方法,调用线程将被阻塞,直至join线程完成。

setDaemon(true):指定线程设置为后台线程。在start( )之前调用。后台线程,又称守护线程、精灵线程,其作用是为其他线程提供服务(eg:JVM的垃圾回收线程),如果所有的前台线程都死亡,后台线程也会自动死亡。

sleep( long time):设置线程睡眠时间,参数单位为毫秒,调用此方法线程进入阻塞状态。

setPriority(int newPriority):设置优先级,参数范围:1-10,一般使用三个静态常量(MAX_PRIORITY、MIN_PRIORITY、NORM_PRIORITY)。


 

嘻嘻,今天的内容就先到这吧,欢迎大家前来留言。

由于现在个人水平有限,文章若存不当之处,还请各位大佬们加以斧正。

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Unity的UI究竟为什么可以合批 下一篇学习WPF——使用Font-Awesome图标..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目