Java中的线程
我今天在一次采访中被问及Java中的线程概念?问题是Java中的线程,java,multithreading,Java,Multithreading,我今天在一次采访中被问及Java中的线程概念?问题是 什么是线 为什么我们要穿线 线程上的实时示例 我们可以在Spring框架服务类中创建线程吗 flex可以调用线程吗 除了线程的定义,我并没有回答任何问题,这也是我从互联网上学到的 谁能给我解释清楚吗 更新: 线程和普通java类之间的区别是什么。 为什么我们需要线程。。。我可以在线程中执行业务逻辑吗。 我可以在线程中调用不同的类方法吗 我可以回答前3个问题,因为我不太熟悉Spring或Flex的线程功能 线程是一个对象,它有自己的寄存器和堆栈
我可以在线程中调用不同的类方法吗 我可以回答前3个问题,因为我不太熟悉Spring或Flex的线程功能
要创建线程,请创建一个扩展
Thread
类的新类,并实例化该类。扩展类必须重写run
方法并调用start
方法以开始执行线程
在run
中,您将定义构成新线程的代码。理解run
可以像主线程一样调用其他方法、使用其他类和声明变量,这一点很重要。唯一的区别是run
为程序中的另一个并发执行线程建立入口点。这将在run
返回时结束
下面是一个例子:
public class MyThread extends Thread {
private final String name;
public MyThread(String name) {
this.name = name;
}
public void run() {
try {
for (; ; ) {
System.out.println(name);
Thread.sleep(1000);
}
} catch (InterruptedException e) {
System.out.println("sleep interrupted");
}
}
public static void main(String[] args) {
Thread t1 = new MyThread("First Thread");
Thread t2 = new MyThread("Second Thread");
t1.start();
t2.start();
}
}
您将在屏幕上看到:
First Thread
Second Thread
First Thread
Second Thread
First Thread
还解释了
Runnable
接口。使用Spring,您可以。就Spring而言,您当然可以创建自己的线程。但是最好使用Spring框架手册第1部分中描述的线程池支持
但是,让请求在基于Spring的web服务(或任何web服务)中生成线程会带来您可能希望避免的资源管理问题…需要澄清的一个关键概念是,线程是一个OS调度对象,恰好有一个Java类代表它(例如,UI子系统中的窗口)线程本身不是一种类。Flex不能直接与Java线程通信,无论您使用JMS还是其他什么,都必须有某种消息传递,Flex通过BlazeDS、GraniteDS或LCD可以与JMS通信。需要记住的一点是,目前Flash/Flex本身是单线程的,但是高度异步…有些人会说太异步了…因此,任何使用Java线程来加速事情的方法都可能没有你希望的那么大效果。多线程是一种Java功能,它允许并发执行程序的两个或多个部分,以最大限度地利用CPU。这样的程序的每个部分都称为线程。因此,> 线程是进程中的轻量级进程 可以使用两种机制创建线程:
java.lang.Thread
类的类。该类重写Thread
类中可用的run()
方法。线程在run()
方法中开始其生命。我们创建了新类的对象并调用start()
方法开始执行线程。start()
调用thread
对象上的run()
方法
class MultithreadingDemo extends Thread{
public void run() {
try { // Displaying the thread that is running
System.out.println ("Thread " + Thread.currentThread().getId()
+ " is running");
}
catch (Exception e){ // Throwing an exception
System.out.println ("Exception is caught");
}
}
}
public class Multithread{
public static void main(String[] args) {
int n = 8; // Number of threads
for (int i=0; i<8; i++) {
MultithreadingDemo object = new MultithreadingDemo();
object.start();
}
}
}
线程类与可运行接口
class MultithreadingDemo implements Runnable{
public void run() {
try { // Displaying the thread that is running
System.out.println ("Thread " + Thread.currentThread().getId() +
" is running");
}
catch (Exception e) { // Throwing an exception
System.out.println ("Exception is caught");
}
}
}
class Multithread{
public static void main(String[] args) {
int n = 8; // Number of threads
for (int i=0; i<8; i++) {
Thread object = new Thread(new MultithreadingDemo());
object.start();
}
}
}
ExecutorService executorService = Executors.newFixedThreadPool(Runtime.getRuntime()
.availableProcessors());
class MyThreads extends Thread
{
int ch ;
MyThreads(int p)
{
ch = p;
start();//statement to activate thread and call run
}
public void run()
{
if(ch == 1)
functionx()
else if(ch == 2)
functiony();
}
void fx1()
{
//parallel running code here
}
void fx2()
{
//parallel running code here
}
public static void main(String args[])
{
MyThreads obj1 = new MyThreads(1);
My3Threads obj2 = new MyThreads(2);
//mains next instruction code here
}
}