您的位置:首页 > 编程语言 > Java开发

java中关于线程的知识

2016-04-02 00:56 465 查看

java中的多线程处理

在java中,通过两种方式来实现多线程

1.继承Thread类。

通过继承Thread类来实现多线程的方法简单明了,但是他也有一个很大的缺点,那就是如果相应的多线程处理类已经继承了一个类,便无法再继承Thread类。所以我们一般情况下不采用这种方式来实现线程的编程。

2.实现Runnable接口

使用Runnable接口的方法来实现多线程。在开发过程中能够在一个类中包含所有的代码,以便封装。但是使用Runna接口方法的缺点在于如果想创建多个线程并使个各个线程执行不同的额代码,必须创建额外的类。

方法一:

class TestThread extends Thread(){
private String threadName;
TestThread(String threadName){
this.threadName=threadName;
}
public void run(){
System.out.println(threadName);
}
}

public class MyThread(){
public static void main(String[] args){
for(int i=0;i<10;i++){
TestThread tt=new TestThread("#"+i);
tt.start();
}
}
}


方式二:

class TestRunnable implements Runnable(){
private String threadName;
TestRunnable(String threadName){
this.threadName=threadName;
}
public void run(){
System.out.println(threadName);
}
}

public class MyThread(){
public static void main(String[] args){
for(int i=0;i<10;i++){
TestRunnable tt=new TestRunnable("#"+i);
tt.start();
}
}
}


如果想实现每一个线程都有自己共享的变量改如何解决呢?

ThreadLocal主要解决的就是每个线程绑定自己的值,可以将ThreadLocal类比喻成全局存放数据的盒子,盒子中可以存储每个线程的私有数据。

主要方法:

get():返回此线程局部变量的当前线程副本中的值。

initialValue():返回此线程局部变量的当前线程的“初始值”。

remove():移除此线程局部变量当前线程的值。

set(T value):将此线程局部变量的当前线程副本中的值设置为指定值.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: