最新公告
  • 欢迎您光临立业阁,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入我们
  • java多线程如何实现_Java教程


    java实现多线程的方法:(推荐:java视频教程

    方式一:继承Thread类的方式

    1、创建一个继承于Thread类的子类

    2、重写Thread类中的run():将此线程要执行的操作声明在run()

    3、创建Thread的子类的对象

    4、调用此对象的start():①启动线程 ②调用当前线程的run()方法

    方式二:实现Runnable接口的方式

    1、创建一个实现Runnable接口的类

    2、实现Runnable接口中的抽象方法:run():将创建的线程要执行的操作声明在此方法中

    3、创建Runnable接口实现类的对象

    4、将此对象作为参数传递到Thread类的构造器中,创建Thread类的对象

    5、调用Thread类中的start():① 启动线程 ② 调用线程的run() —>调用Runnable接口实现类的run()

    以下两种方式是jdk1.5新增的!

    方式三:实现Callable接口

    说明:

    1、与使用Runnable相比, Callable功能更强大些

    2、实现的call()方法相比run()方法,可以返回值

    3、方法可以抛出异常

    4、支持泛型的返回值

    5、需要借助FutureTask类,比如获取返回结果

    Future接口可以对具体Runnable、Callable任务的执行结果进行取消、查询是否完成、获取结果等。FutureTask是Futrue接口的唯一的实现类FutureTask 同时实现了Runnable, Future接口。它既可以作为Runnable被线程执行,又可以作为Future得到Callable的返回值

    方式四:使用线程池

    说明:

    提前创建好多个线程,放入线程池中,使用时直接获取,使用完放回池中。可以避免频繁创建销毁、实现重复利用。类似生活中的公共交通工具。

    好处:

    1、提高响应速度(减少了创建新线程的时间)

    2、降低资源消耗(重复利用线程池中线程,不需要每次都创建)

    3、便于线程管理

    示例:

    import java.util.concurrent.Callable;
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;
    import java.util.concurrent.FutureTask;
    import java.util.concurrent.ThreadPoolExecutor;
    
    //方式一
    class ThreadTest extends Thread {
    	@Override
    	public void run() {
    		for (int i = 0; i < 10; i++) {
    			System.out.println(Thread.currentThread().getName() + ":" + i);
    		}
    	}
    }
    
    // 方式二
    class RunnableTest implements Runnable {
    	@Override
    	public void run() {
    		for (int i = 0; i < 10; i++) {
    			System.out.println(Thread.currentThread().getName() + ":" + i);
    		}
    	}
    }
    
    // 方式三
    class CallableTest implements Callable<Integer> {
    
    	@Override
    	public Integer call() throws Exception {
    		int sum = 0;
    		for (int i = 0; i < 10; i++) {
    			System.out.println(Thread.currentThread().getName() + ":" + i);
    			sum += i;
    		}
    		return sum;
    	}
    
    }
    
    // 方式四
    class ThreadPool implements Runnable {
    
    	@Override
    	public void run() {
    		for (int i = 0; i < 10; i++) {
    			System.out.println(Thread.currentThread().getName() + ":" + i);
    		}
    	}
    
    }
    
    public class Test {
    	public static void main(String[] args) {
    		// 继承Thread
    		ThreadTest thread = new ThreadTest();
    		thread.setName("方式一");
    		thread.start();
    
    		// 实现Runnable
    		RunnableTest runnableTest = new RunnableTest();
    		Thread thread2 = new Thread(runnableTest, "方式二");
    		thread2.start();
    
    		// 实现Callable<> 有返回值
    		CallableTest callableTest = new CallableTest();
    		FutureTask<Integer> futureTask = new FutureTask<>(callableTest);
    		new Thread(futureTask, "方式三").start();
    		// 返回值
    		try {
    			Integer integer = futureTask.get();
    			System.out.println("返回值(sum):" + integer);
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    
    		// 线程池
    		ExecutorService pool = Executors.newFixedThreadPool(10);
    
    		ThreadPoolExecutor executor = (ThreadPoolExecutor) pool;
    		/*
    		 * 可以做一些操作:
    		 * corePoolSize:核心池的大小 
    		 * maximumPoolSize:最大线程数
    		 * keepAliveTime:线程没任务时最多保持多长时间后会终止
    		 */
    		executor.setCorePoolSize(5);
    
    		// 开启线程
    		executor.execute(new ThreadPool());
    		executor.execute(new ThreadPool());
    		executor.execute(new ThreadPool());
    		executor.execute(new ThreadPool());
    
    	}
    
    }

    更多java知识请关注java基础教程栏目。

    以上就是java多线程如何实现的详细内容,更多请关注liyege.cn其它相关文章!

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    • 1195会员总数(位)
    • 111863资源总数(个)
    • 5本周发布(个)
    • 0 今日发布(个)
    • 249稳定运行(天)

    提供最优质的资源集合

    立即查看 了解详情
    冀ICP备19022365号-1 百度地图

    [email protected]

    立业阁(www.liyege.cn)免费提供wordpress主题模板、dedecms模板、帝国cms模板、小说网站源码、电影网站源码以及网络技术分享,建站源码,小说模板,电影模板,网赚教程,VPS推荐