java多线程怎么解决数据共享 Java中如何用Thread类实现多线程?
Java中如何用Thread类实现多线程?
1.回答你的问题,继承Thread类调用start方法实现多线程。
其实Java实现多线程有三种继承Thread类,实现Runnable接口和Callable接口。
前两个没有返回值,后一个有返回值。说到多线程,让 让我们来谈谈线程。
2.什么是线程?
进程是指在内存中运行的应用程序。每个进程都有自己独立的内存空间,多个线程共享进程请求的内存。
一个进程中可以启动多个线程。比如java运行一个程序,会启动一个进程,这个进程至少会启动主线程和垃圾收集线程。
一个线程总是属于一个进程,并与该进程中的其他线程共享分配给该进程的所有资源,但该线程有自己独立的堆栈。
Java线程分为普通线程和守护线程,比如垃圾收集线程。
3、线程的状态
新的:线程对象已创建,但尚未调用start方法。
当调用runnable start0方法时,线程进入这种状态。等待/阻塞/睡眠/运行也会进入这种状态。
运行可运行线程执行将进入这种状态。
睡眠状态:包括等待/阻塞睡眠。由于某种条件,线程不再被执行,但在等待事件出现时,可能会返回到可运行状态。
Dead:异常或执行run方法所达到的状态。
4.线程同步
既然是多线程,就要注意线程安全。
要解决线程安全问题,就要加锁。Java提供了synchronized和lock来实现线程同步的问题(这里不提Lock的实现,后面可以分享)。
5.线程通信
Wait/notify method of target, wait and signal method of condition, implementation class of blocking queue,
并发包下的Semaphore和CyclicBarrier CountDownLatch能否实现线程通信,这里就不清楚了。
6.线程池
线程池可以参考我分享的关于ThreadPoolExecutor的文章。
7.其他人
ThreadLocal volatile这两个东西也是线程经常需要用到的,可以了解一下。
基本上,那 的所有线程使用,希望对你有所帮助。
你可以关注我,然后你会通过源代码分析其中涉及的知识点。
实现线程库的两种不同方法?
java多线程的两种方法也有细微的区别!继承thread类实现runnable接口(注意:共享数据时实现runnable接口,thread类不支持)。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。