public class ThreadSingleton
{
private static ThreadLocal tl = new ThreadLocal();
ThreadSingleton(){}
public static ThreadSingleton getInstance()
{
ThreadSingleton ts = ti.get();
if(ts == null)
{
ts = new ThreadSingleton();
ti.set(ts);
}
return ts;
}
}
----------------------------------------------
public static void main(String[] args) {
ThreadSingleton ts1 = ThreadSingleton.getInstance();
ThreadSingleton ts2 = ThreadSingleton.getInstance();
System.out.println(ts1);
System.out.println(ts2);
Thread th = new Thread()
{
@Override
public void run()
{
ThreadSingleton ts3 = ThreadSingleton.getInstance();
ThreadSingleton ts4 = ThreadSingleton.getInstance();
System.out.println(ts3);
System.out.println(ts4);
}};
th.start();
}
--------------------------
Console输出
com.timer.ThreadSingleton@18a992f
com.timer.ThreadSingleton@18a992f
com.timer.ThreadSingleton@dc8569
com.timer.ThreadSingleton@dc8569
分享到:
相关推荐
可以按单列或多列组合排序,每列的顺序可以设置为反序或者正序; 列的数据类型可以是字符串、整数、浮点数,比较排序时按指定的数据类型比较大小; 排序算法可以单线程执行(适用于小文件),也可以多线程执行(适用...
3. 创建线程的方式包括实现Runnable接口、继承Thread类以及使用ExecutorService。 4. Runnable和Callable的区别:Runnable没有返回值,Callable可以有返回值并且能抛出异常。 5. 线程的状态包括新建、就绪、运行、...
标题"Thread.zip_ListView/ListBox_Visual_Basic_"和描述"Thread access to listbox"暗示了我们要讨论的是如何在多线程环境中安全地操作`ListBox`。 首先,让我们了解`ListView`和`ListBox`的基本概念。`ListView`...
- sleep()是Thread类的方法,使当前线程暂停指定时间,不会释放锁。 - wait()是Object类的方法,用于线程间通信,使当前线程等待,释放持有的锁,需要在同步块或方法中调用。 以上内容详细阐述了Java基础部分的...
多线程是Java实现并发执行的手段,通过Thread类或者实现Runnable接口可以创建线程。线程池是管理线程的工具,如ExecutorService,它可以有效地管理和控制线程的生命周期,提高系统资源的利用率。 反射是Java的动态...
4. 创建线程的方式有实现`Runnable`接口、继承`Thread`类、使用`ExecutorService`。 5. `Runnable`无需返回值,`Callable`可返回结果。 6. 线程状态包括新建、就绪、运行、阻塞和死亡。 7. `sleep()`让线程休眠,`...
继承Thread类直接创建线程对象,而实现Runnable接口更利于资源的共享和多线程协作。 10. **异常处理的try-catch-finally** - 异常处理通过try-catch-finally语句块来捕获和处理异常。try块中的代码可能会抛出异常...
- **线程创建**:通过实现Runnable接口、继承Thread类或使用ExecutorService创建线程。 - **并发控制**:CountDownLatch、CyclicBarrier、Semaphore和Exchanger用于同步和协调线程。 - **线程池**:...
- **Thread类**:通过继承Thread类并重写run()方法来创建线程。 - **Runnable接口**:实现Runnable接口并重写run()方法,然后将该实现类的对象作为参数传递给Thread类的构造器来创建线程。 **区别**: - 继承Thread...
49. Thread的wait()使线程等待,sleep()让线程休眠一段时间。wait()需要在同步块中使用,sleep()可以在任何地方使用。 50. sleep()不会释放锁,yield()让当前线程让出CPU执行权,但不保证立即执行其他线程。 51. ...
- 创建线程的方法有实现Runnable接口、继承Thread类和使用ExecutorService。 - `sleep()`使当前线程休眠,`wait()`让线程等待,两者都需要捕获InterruptedException。 - `synchronized`和`volatile`、`Lock`(如...
继承Thread类、实现Runnable接口、实现Callable接口配合FutureTask。 29. **runnable与callable的区别**: Runnable没有返回值,不能抛出检查异常;Callable可以有返回值,可以抛出异常。 30. **线程状态**: ...
38. **创建线程的方式**:实现Runnable接口、继承Thread类、使用ExecutorService的submit()或execute()方法。 39. **Runnable与Callable**:Runnable没有返回值,Callable有返回值,可以通过FutureTask包装后提交给...
Java提供了强大的多线程支持,可以通过实现`Runnable`接口或继承`Thread`类来创建线程。此外,Java 5引入了`Executor`框架,进一步简化了线程管理。 - **线程状态**:线程在其生命周期内会经历不同的状态,包括可...
2. 线程的run()方法是线程执行的核心,用户可以通过继承Thread类或者实现Runnable接口来自定义线程行为。 3. 设计Access数据库表的原则是每个表应只包含一个主题的信息,不应包含重复信息,且信息不应该在表之间...
- `Collection`:集合框架的顶级接口,代表单列集合。 - `Collections`:工具类,提供了对集合操作的各种静态方法。 6. **final 关键字的用途:** - 类:声明为 `final` 的类不能被继承。 - 方法:`final` 方法...
12. sleep() 和 wait():sleep() 是 Thread 类的方法,使当前线程暂停指定时间,不会释放锁;wait() 是 Object 类的方法,使线程等待,会释放锁,需在同步环境中使用。 13. Java 没有 goto 关键字。 14. 数组的 ...
通过`Thread`类或实现`Runnable`接口,开发者可以创建并管理多个执行线程。同时,Java提供了`synchronized`关键字、`volatile`变量、`Lock`接口等机制来控制并发访问,保证线程安全。 五、IO流 Java的IO流系统用于...
14. **sleep()与wait()的区别**:sleep()是Thread类的方法,让当前线程暂停指定时间,不会释放锁;wait()是Object类的方法,使线程等待,释放对象锁,需要其他线程调用notify()或notifyAll()唤醒。 15. **Overload...