小编Jan*_*cek的帖子

无法获取信号量的线程会发生什么?

当线程无法获取信号量时(由于缺少许可证)会发生什么.它会被转移到等待状态吗?

编辑:当信号量可用时,线程是否会恢复先前的执行序列.

java concurrency multithreading semaphore java.util.concurrent

5
推荐指数
1
解决办法
1697
查看次数

在Java中读取txt文件中的特定行

ListeMot.txt文件包含336529 Line

如何捕捉特定的线条.

这是我的代码

 int getNombre()
 {
   nbre = (int)(Math.random()*336529);
   return nbre ;
 }

public String FindWord () throws IOException{
   String word = null;
   int nbr= getNombre();
   InputStreamReader reader = null;
   LineNumberReader lnr = null;
   reader = new InputStreamReader(new FileInputStream("../image/ListeMot.txt"));
   lnr = new LineNumberReader(reader);
   word = lnr.readLine(nbr);
}
Run Code Online (Sandbox Code Playgroud)

为什么我不能得到word = lnr.readLine(nbr); ??

谢谢

PS我是java新手!

java io file-io

5
推荐指数
1
解决办法
783
查看次数

有没有办法在GHCi中列出已加载函数的名称?

我在目录中有一个haskell文件my.hs.在那个目录中我运行GHCi.在提示我输入

:load my.hs
Run Code Online (Sandbox Code Playgroud)

GHCi中是否有一些命令会列出从文件中加载的所有函数的名称?我没有在显示的帮助中找到它:?在GHCi

haskell ghci

3
推荐指数
1
解决办法
112
查看次数

同步方法和信号量的语义等价(1,真)?

以下两个方法定义在语义上是等价的吗?为什么?为什么不?

版本A:

private static synchronized void foo() {
    bar();
}
Run Code Online (Sandbox Code Playgroud)

版本B:

private static Semaphore available = new Semaphore(1, true);
private static void foo() {
    available.acquire();
    try {
        bar();
    }
    finally {
       available.release();
    }
}
Run Code Online (Sandbox Code Playgroud)

java concurrency multithreading jvm semaphore

2
推荐指数
1
解决办法
251
查看次数

简单的Java代码允许单线程访问和其他线程跳过/继续

换句话说,我不希望线程等待它无法访问锁(如在同步中),我想线程执行只是在它无法获得锁时立即返回.

像这样简单的布尔锁可能允许多个线程访问.

private static boolean lockAvailable = true;

private boolean acquireLock() {
  if(lockAvailable) {
    lockAvailable = false;
    return true;
  }
  return false;
}
Run Code Online (Sandbox Code Playgroud)

我错过了什么吗?实现这一目标的最佳/最简单方法是什么?

编辑:

谢谢你指出信号量(!)

所以再看一遍这段代码是防弹吗?

private final static Semaphore lock = new Semaphore(1, true);   

public void tryAndDoSomething() {
  if(lock.tryAcquire()) {
    try {
      // only single thread can access here at one time
    } finally {
      lock.release();
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

更新:

我意识到我需要可重入的功能,所以我创建了一个简单的非阻塞重入.为任何对您如何执行此操作感兴趣的人发布代码.任何想要这种功能的人当然应该使用现有的 Java类java.util.concurrent.locks.ReentrantLock:

import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;

/**
 * SimpleNonBlockingLock ensures that only a single thread can call …
Run Code Online (Sandbox Code Playgroud)

java concurrency multithreading synchronization semaphore

1
推荐指数
1
解决办法
4452
查看次数

将类型对象转换为类型JButton?

嗨,我有一个问题,我有一个对象类型为Object Class的对象,我想将其转换为类型为java.swing.JButton的对象吗?这是代码:

private void EventSelectedFromList(java.awt.event.ActionEvent evt) {                                       
        // add code here
        try
        {
            String eventName = (String)EventList.getSelectedItem();// get the event 
            EventSetDescriptor ed = eventValue(events,eventName);
            if(ed.getListenerType() == ActionListener.class){// check if selected event has an actionListerner listener
                AddEventHandlerButton.setEnabled(true);// Enable eventhandler button
                String objectName = (String) ObjectList.getSelectedItem();
                Object ob = FindObject(hm, objectName);// retrieve the object from hashmap
                // now 'ob' of type of JButton, I want to add ActionListener to this JButton???

                Class zzz = ob.getClass();
                System.out.println(zzz);

            } else {
                AddEventHandlerButton.setEnabled(false);
            }
        }catch(Exception …
Run Code Online (Sandbox Code Playgroud)

java swing jbutton

0
推荐指数
1
解决办法
5498
查看次数